我有一个包含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
解决此问题的最佳方法是什么?任何线索或想法都会非常有帮助!
答案 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)
由于它返回一组而不是Item1
和Item2
的列,因此不确定是否正是您想要的,但是您可以使用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()