合并数据框中两列中具有相同值的重复行,并将值添加到第三列中

时间:2019-02-19 18:02:08

标签: python pandas dataframe duplicates

我有一个包含3列的数据框,如下所示:

Item1 Item2 Value
Apple Orange 3
Apple Banana 2
Mango Apple 2
Banana Apple 6
Apple Mango 5
Orange Banana 4
Orange Apple 5

我要基于两列Item1和Item2的组合删除重复的行,并且仅以任意顺序显示一个,并希望将其值相加,因此最终输出可以是:

Item1 Item2 Value
Apple Orange 8
Apple Banana 8
Mango Apple 7
Orange Banana 4

解决此问题的最佳方法是什么?任何线索或想法都会非常有帮助!

2 个答案:

答案 0 :(得分:2)

{sort首先

df[['Item1','Item2']]=np.sort(df[['Item1','Item2']].values,1)
df.groupby(['Item1','Item2']).Value.sum()
Out[374]: 
Item1   Item2 
Apple   Banana    8
        Mango     7
        Orange    8
Banana  Orange    4
Name: Value, dtype: int64

答案 1 :(得分:0)

由于它返回一组而不是Item1Item2的列,因此不确定是否正是您想要的,但是您可以使用frozenset创建一组值以进行分组

import pandas as pd
df = pd.DataFrame(data={'Item1': ['A','B','C'], 'Item2': ['B','A','D'], 'Value': [2,4,9]})
df.groupby((df[['Item1', 'Item2']].agg(frozenset, 1))).sum()