在一个Pandas DataFrame中使用与另一个Pandas DataFrame中的第一个帧对应的索引列来选择行

fafcakar  于 2023-04-04  发布在  其他
关注(0)|答案(1)|浏览(105)

我有一个赛程表和一个赛程表中每个队的平均成绩表。我想把赛程表中每个队每场比赛的平均成绩加在一起。
我有两个 Dataframe ,其中一个是使用multiindex组织的两个联盟的球队的比赛时间表:

red alliance  blue alliance      
    team1 team2   team1 team2
1   1     2       3     4
2   1     3       2     4
3   4     1       3     2

以及关于每个团队的平均统计数据列表中的一个,其中团队编号是索引(在这种情况下,团队编号是连续的,并且从1开始,但真实的团队编号可能是1885,18438,19876等):

average score      average penalties
team                                    
1.      6.2.               1.1
2.      9.5.               0.2
3.      4.0.               1.3
4.      3.3.               0.5

我想在比赛时间表DataFrame中为每个联盟添加一个新列,其中包含两支球队平均水平的总和:

red alliance                                  blue alliance      
    team1 team2  averageScore  averagePenalties.  team1 team2  averageScore  averagePenalties
1   1     2      15.7          1.3                3     4.     7.3.          1.8
2   1     3      10.2.         2.4.               2     4.     12.8.         0.7
3   4     1      7.3.          1.8.               3     2.     13.5.         1.5

有没有比简单地遍历整个DataFrame更有效的方法来完成这个任务?本质上,有没有一种方法可以从一列索引中生成一个dataframe,series或list,然后将其中的两个(一个用于team1,一个用于team2)添加在一起?

sdnqo3pr

sdnqo3pr1#

您可以使用.replace来“Map”所有索引/值。

>>> df1.replace(df2["average score"]).groupby(level=0, axis=1).sum()
   blue alliance  red alliance
0            7.3          15.7
1           12.8          10.2
2           13.5           9.5

要将其返回到原始 Dataframe 中,可以添加多索引并使用.join
我没有太多地使用multiIndex列,所以可能有一种更简单的方法来写这个:
x一个一个一个一个x一个一个二个x

相关问题