我有以下两个数据框,
统计
:
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
& 游戏
:
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
感谢您的宝贵时间和帮助!
最佳答案
你可以用 set_index
和 update
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
关于python - pandas - 仅更新基于 'key' 值的特定 DataFrame 列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50353592/