[英]Joining 3 separate DataFrames based off 3 common column values in Pandas
使用包含 Pandas 的 NFL 数据集,其中包含 2019 赛季第 1 周的所有进攻球员统计数据。 我目前有三个 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
您正在寻找以Player
、 Pos
和Tm
作为索引的外连接。 首先,将这些附加到您的索引中,然后使用outer
连接类型调用您当前的尝试
dfs = [d.set_index(['Pos', 'Tm'], append=True) for d in dfs]
dfs[0].join(dfs[1:], how='outer')
PassingYds PassingTD Int PassingAtt Cmp Rec Tgt ReceivingYds ReceivingTD RushingAtt RushingYds RushingTD
Player Pos Tm
Christian McCaffrey RB CAR NaN NaN NaN NaN NaN NaN NaN NaN NaN 19.0 128.0 2.0
Dak Prescott QB DAL 405.0 4.0 0.0 32.0 25.0 NaN NaN NaN NaN NaN NaN NaN
Dalvin Cook RB MIN NaN NaN NaN NaN NaN NaN NaN NaN NaN 21.0 111.0 2.0
DeSean Jackson WR PHI NaN NaN NaN NaN NaN 8.0 9.0 154.0 2.0 NaN NaN NaN
John Ross WR CIN NaN NaN NaN NaN NaN 7.0 12.0 158.0 2.0 NaN NaN NaN
Kirk Cousins QB MIN 98.0 1.0 0.0 10.0 8.0 NaN NaN NaN NaN NaN NaN NaN
Lamar Jackson QB BAL 324.0 5.0 0.0 20.0 17.0 NaN NaN NaN NaN NaN NaN NaN
Mark Ingram RB BAL NaN NaN NaN NaN NaN NaN NaN NaN NaN 14.0 107.0 2.0
Marlon Mack RB IND NaN NaN NaN NaN NaN NaN NaN NaN NaN 25.0 174.0 1.0
Marquise Brown WR BAL NaN NaN NaN NaN NaN 4.0 5.0 147.0 2.0 NaN NaN NaN
Michael Gallup WR DAL NaN NaN NaN NaN NaN 7.0 7.0 158.0 0.0 NaN NaN NaN
Patrick Mahomes QB KAN 378.0 3.0 0.0 33.0 25.0 NaN NaN NaN NaN NaN NaN NaN
Robert Griffin QB BAL 55.0 1.0 0.0 6.0 6.0 NaN NaN NaN NaN NaN NaN NaN
Sammy Watkins WR KAN NaN NaN NaN NaN NaN 9.0 11.0 198.0 3.0 NaN NaN NaN
Saquon Barkley RB NYG NaN NaN NaN NaN NaN NaN NaN NaN NaN 11.0 120.0 0.0
最好将以下这些数据转换为 .CSV 格式,然后合并数据,然后您可以以数据框的形式导入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.