python - 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
感谢您的时间和帮助!
解决方案
你可以用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
推荐阅读
- java - 通过 maven 运行 scalatest 时出现“java.lang.ClassCastException”错误
- javascript - 我将如何正确地 .catch 这个?
- visual-studio - 通过 `dotnet add package ..` 处理 nugets 与通过 Visual Studio UI 添加 nugets 的区别
- c# - Xamarin 表单编辑器属性
- firebase - 无法从“index.cjs.js”中找到模块“firebase-admin”
- ios - 在 1 个集合视图中选择单元格以更改第二个集合视图属性(Xcode)
- python - Python:从 ctypes 外部函数成功返回后内存损坏
- terraform - Terraform:如何将 Windows 工作节点添加到 eks 集群?
- webmethods - 如何使用 WebMethods 检查字符串是否为回文
- html - 更改按钮的字体