首页 > 解决方案 > pandas - 根据“键”值仅更新特定的 DataFrame 列值

问题描述

我有以下两个数据框,

stats

player_id   player_name   gp    ab   run   hit
    28920      S. Smith    1     2     1     3
    33351    T. Mancini    0     0     0     0
    30267     C. Gentry    0     0     0     0
    34885        H. Kim    1     0     0     0
    31988     J. Schoop    0     0     0     0
     5908    J.J. Hardy    1     3     0     0

& game:

player_id   player_name   gp    ab   run    hit
    28920      S. Smith    1     4     1      1
    33351    T. Mancini    1     1     0      1
    34885        H. Kim    1     1     2      0
    5908     J.J. Hardy    1     4     0      0

我只想根据 更新上一场比赛中活跃的玩家的统计数据player_id,因此最终的统计数据 DataFrame 如下所示:

player_id   player_name   gp    ab   run   hit
    28920      S. Smith    2     6     2     4
    33351    T. Mancini    1     1     0     1
    30267     C. Gentry    0     0     0     0
    34885        H. Kim    2     1     2     0
    31988     J. Schoop    0     0     0     0
     5908    J.J. Hardy    2     7     0     0

感谢您的时间和帮助!

标签: pythonpandasdataframemergeupdates

解决方案


你可以用set_indexupdate

stats=stats.set_index(['player_id','player_name'])
game=game.set_index(['player_id','player_name'])
stats.update(game)
stats = stats.astype(int).reset_index()
stats
Out[452]: 
   player_id player_name  gp  ab  run  hit
0      28920     S.Smith   1   4    1    1
1      33351   T.Mancini   1   1    0    1
2      30267    C.Gentry   0   0    0    0
3      34885       H.Kim   1   1    2    0
4      31988    J.Schoop   0   0    0    0
5       5908   J.J.Hardy   1   4    0    0

由于您使用更新您的问题add

#stats=stats.set_index(['player_id','player_name'])
#game=game.set_index(['player_id','player_name'])
stats.add(game,fill_value=0).astype(int).reset_index()
Out[460]: 
   player_id player_name  gp  ab  run  hit
0       5908   J.J.Hardy   2   7    0    0
1      28920     S.Smith   2   6    2    4
2      30267    C.Gentry   0   0    0    0
3      31988    J.Schoop   0   0    0    0
4      33351   T.Mancini   1   1    0    1
5      34885       H.Kim   2   1    2    0

推荐阅读