【发布时间】:2020-05-11 03:16:14
【问题描述】:
使用包含 2019 赛季第 1 周所有进攻球员统计数据的 NFL 数据集。我目前有三个 DataFrame,一个用于传递统计数据,一个用于快速统计数据和一个接收统计数据。我想将所有三个 DataFrame 组合成一个最终的 DataFrame。问题是一些玩家出现在一个或多个 DataFrame 中。例如,QB 可以跑动和传球,因此一些 QB 会同时出现在传球 DF 和冲球 DF 中。 “玩家”是我想要将它们组合起来的通用索引,但每个重复的行也将具有共同的“Pos”和“Tm”值。所以我想在'Player'、'Tm'和'Pos'列上组合这三个DataFrame。
我目前将每个 DataFrame 保存到名为 dfs 的列表中的一个变量中。
我试过了
df = dfs[0].join(dfs[1:])
但这导致给了我一个只有一行的 DataFrame - Julian Edelman - 唯一一个在 2019 赛季第 1 周跑动、传球和接球的球员。我只想说这不是我想要的。
下面复制的是每个 DataFrame 的前五行。
Pos Tm PassingYds PassingTD Int PassingAtt Cmp
Player
Lamar Jackson QB BAL 324 5 0 20 17
Dak Prescott QB DAL 405 4 0 32 25
Robert Griffin QB BAL 55 1 0 6 6
Patrick Mahomes QB KAN 378 3 0 33 25
Kirk Cousins QB MIN 98 1 0 10 8
--------------------------------------------------------------------------
Pos Tm Rec Tgt ReceivingYds ReceivingTD
Player
Sammy Watkins WR KAN 9 11 198 3
Michael Gallup WR DAL 7 7 158 0
John Ross WR CIN 7 12 158 2
DeSean Jackson WR PHI 8 9 154 2
Marquise Brown WR BAL 4 5 147 2
---------------------------------------------------------------------------
Pos Tm RushingAtt RushingYds RushingTD
Player
Marlon Mack RB IND 25 174 1
Christian McCaffrey RB CAR 19 128 2
Saquon Barkley RB NYG 11 120 0
Dalvin Cook RB MIN 21 111 2
Mark Ingram RB BAL 14 107 2
【问题讨论】:
-
dfs = [d.set_index(['Pos', 'Tm'], append=True) for d in dfs]; dfs[0].join(dfs[1:], how='outer')?
标签: python pandas dataframe merge inner-join