首页 > 解决方案 > 如何合并熊猫中的行以获取无序的一对列?

问题描述

我的数据框中有如下行-

     Team 1          Team 2         Winner       winner_count
0   Afghanistan     Australia     Australia             1
19    Australia   Afghanistan     Australia             1

我想将这两行合并为一个并将winner_count相加,这样-

     Team 1          Team 2         Winner       winner_count
0   Afghanistan     Australia     Australia             2

这应该是我的输出。

标签: pythonpandasdataframepandas-groupby

解决方案


如果您的数据框中有很多行,我会尽量避免通过axis=1. 您可以从我之前在这里回答的一个非常相似的问题中看到性能影响:

s1 = np.where(df['Team 2'] > df['Team 1'], df['Team 1'], df['Team 2'])
s2 = np.where(df['Team 2'] < df['Team 1'], df['Team 1'], df['Team 2'])
df['Team 1'] = s1
df['Team 2'] = s2
df = df.groupby(['Team 1', 'Team 2', 'Winner'])['winner_count'].sum().reset_index()
df
Out[1]: 
        Team 1     Team 2     Winner  winner_count
0  Afghanistan  Australia  Australia             2

推荐阅读