career regular season statistics    
  
  | Year | Team | League | 
        GP         Games Played 
       | 
      
        AB         At Bats	 
       | 
      
        R         Runs	 
       | 
      
        H         Hits	 
       | 
      
        2B         Doubles	 
       | 
      
        3B         Triples	 
       | 
      
        HR         Home Runs	 
       | 
      
        RBI         Runs Batted In	 
       | 
      
        BB         Walks	 
       | 
      
        SO         Strikeouts	 
       | 
      
        SB         Stolen Bases	 
       | 
      
        CS         Caught Stealing	 
       | 
      
        AVG         Batting Average	 
       | 
      
        OBP         On-Base Percentage	 
       | 
      
        SLG         Slugging Percentage 
       | 
      
        OPS         On-Base Plus Slugging 
       | 
    
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025 | Pittsburgh | NL | 93 | 285 | 21 | 71 | 12 | 1 | 4 | 30 | 40 | 93 | 1 | 1 | .249 | .355 | .340 | .696 | 
| 2024 | Pittsburgh | NL | 80 | 253 | 38 | 67 | 11 | 0 | 13 | 45 | 22 | 73 | 0 | 0 | .265 | .337 | .462 | .799 | 
| 2023 | San Francisco | NL | 30 | 87 | 9 | 18 | 5 | 0 | 0 | 5 | 3 | 23 | 0 | 0 | .207 | .263 | .264 | .528 | 
| 2023 | Sacramento | AAA | 60 | 206 | 33 | 51 | 12 | 0 | 6 | 28 | 30 | 69 | 1 | 0 | .248 | .357 | .393 | .750 | 
| 2022 | San Francisco | NL | 97 | 261 | 34 | 56 | 6 | 0 | 11 | 25 | 26 | 112 | 2 | 1 | .215 | .296 | .364 | .660 | 
| 2022 | Sacramento | AAA | 7 | 28 | 5 | 8 | 0 | 0 | 1 | 4 | 2 | 6 | 0 | 0 | .286 | .355 | .393 | .748 | 
| 2021 | San Francisco | NL | 2 | 6 | 1 | 2 | 0 | 0 | 0 | 1 | 0 | 2 | 0 | 0 | .333 | .333 | .333 | .667 | 
| 2021 | Sacramento | AAA | 67 | 252 | 37 | 74 | 15 | 0 | 10 | 46 | 21 | 82 | 0 | 0 | .294 | .358 | .472 | .831 | 
| 2020 | San Francisco | NL | 33 | 103 | 15 | 24 | 5 | 2 | 0 | 7 | 3 | 41 | 0 | 0 | .233 | .288 | .320 | .609 | 
| 2019 | Richmond | AA | 22 | 79 | 9 | 25 | 4 | 1 | 4 | 11 | 7 | 21 | 0 | 2 | .316 | .368 | .544 | .912 | 
| 2019 | San Jose | A | 57 | 234 | 37 | 62 | 10 | 2 | 12 | 37 | 14 | 50 | 5 | 2 | .265 | .315 | .479 | .793 | 
| 2018 | Salem-Keizer | A | 45 | 181 | 35 | 54 | 14 | 2 | 13 | 39 | 12 | 40 | 2 | 1 | .298 | .369 | .613 | .983 | 
| 2018 | AZL Giants Orange | R | 6 | 23 | 3 | 6 | 1 | 1 | 0 | 1 | 1 | 7 | 0 | 0 | .261 | .320 | .391 | .711 | 
| 2018 | Georgia Tech | NCAA | 57 | 220 | 55 | 79 | 12 | 0 | 16 | 38 | 41 | 56 | 3 | 0 | .359 | .471 | .632 | - | 
| 2017 | Georgia Tech | NCAA | 44 | 186 | 36 | 55 | 13 | 0 | 13 | 43 | 16 | 50 | 4 | 0 | .296 | .370 | .575 | - | 
| 2016 | Georgia Tech | NCAA | 43 | 157 | 24 | 47 | 10 | 0 | 1 | 31 | 8 | 34 | 0 | 1 | .299 | .351 | .382 | - | 
| - | Total | NL | 335 | 995 | 118 | 238 | 39 | 3 | 28 | 113 | 94 | 344 | 3 | 2 | .239 | .321 | .369 | .689 | 
| - | Total | AAA | 67 | 252 | 37 | 74 | 15 | 0 | 10 | 46 | 21 | 82 | 0 | 0 | .294 | .358 | .472 | .831 | 
| - | Total | AA | 22 | 79 | 9 | 25 | 4 | 1 | 4 | 11 | 7 | 21 | 0 | 2 | .316 | .368 | .544 | .912 | 
| - | Total | A | 102 | 415 | 72 | 116 | 24 | 4 | 25 | 76 | 26 | 90 | 7 | 3 | .280 | .339 | .537 | .877 | 
| - | Total | R | 6 | 23 | 3 | 6 | 1 | 1 | 0 | 1 | 1 | 7 | 0 | 0 | .261 | .320 | .391 | .711 | 
| - | Total | NCAA | 144 | 563 | 115 | 181 | 35 | 0 | 30 | 112 | 65 | 140 | 7 | 1 | .321 | .407 | .544 | .950 |