Python pandas-仅基于';键';价值
我有以下两个数据帧Python pandas-仅基于';键';价值,python,pandas,dataframe,merge,updates,Python,Pandas,Dataframe,Merge,Updates,我有以下两个数据帧 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
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
&游戏
:
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
更新上一场比赛中活跃玩家的统计数据,以便最终统计数据框如下所示:
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\u 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
您可以使用
set\u 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
什么,什么,2017年的金莺!不管怎样,在给出的数据中还不清楚如何判断谁参加了最近的比赛。你的意思是玩家id告诉你谁参加了最近的比赛,但我不知道怎么做。每个游戏都有数据帧吗?你能详细说明一下吗?统计数据显示了当前球队的统计数据,并且比赛是一个特定的比赛,因此比赛['gp']=1。因此,在游戏添加到统计数据后,新闻统计数据将更新统计数据['gp']1。这将给我目前的统计数字后,他们是由1场比赛。我希望这是有意义的。什么,什么,2017年的金莺!不管怎样,在给出的数据中还不清楚如何判断谁参加了最近的比赛。你的意思是玩家id告诉你谁参加了最近的比赛,但我不知道怎么做。每个游戏都有数据帧吗?你能详细说明一下吗?统计数据显示了当前球队的统计数据,并且比赛是一个特定的比赛,因此比赛['gp']=1。因此,在游戏添加到统计数据后,新闻统计数据将更新统计数据['gp']1。这将给我目前的统计数字后,他们是由1场比赛。我希望这是有意义的。但这不是完全取代了价值观吗?我希望将这些值加在一起,而不是完全替换它们。@michael0196关于
stats.add(game,fill\u value=0)
我建议在结尾处stats=stats.astype(int).reset\u index()
。不幸的是,update
有一个变量,由于内部使用了NaN
,该变量将int
更改为float
。但这不是完全取代了这些值吗?我希望将这些值加在一起,而不是完全替换它们。@michael0196关于stats.add(game,fill\u value=0)
我建议在结尾处stats=stats.astype(int).reset\u index()
。不幸的是,update
有一个变量,由于内部使用了NaN
,该变量将int
更改为float
。