我是Python的新手,非常感谢您的帮助!我有一个包含三列的数据框,并希望将前两列具有相同关联的行组合在一起(即,在列A中与列B在这种情况下并不重要)并在第三列中对它们的值求和。例如,从此数据框开始:
A B C
x y 5
z z 6
y x 4
z y 3
y z 2
我希望能够生成这样的数据框(将x y
与y x
合并; z y
合并y z
):
A B C
x y 9
z z 6
y z 5
有关如何执行此操作的任何建议吗?
到目前为止,这是我的代码:
df = pd.DataFrame.from_dict({k:dict(v) for k,v in dic.items()}).fillna(0)
MG_df = df.stack().reset_index().rename(columns
{'level_0':'Source','level_1':'Target', 0:'Weight'})
pd.DataFrame(np.sort(MG_df[['Source','Target']].values, axis=1))
MG_df.groupby(['Source','Target']).Weight.sum().reset_index()
MG_df = MG_df[MG_df.Weight != 0]
答案 0 :(得分:2)
您可以对A列和B列进行排序,然后使用groupby
df[['A','B']] = pd.DataFrame(np.sort(df[['A','B']].values, axis=1))
df.groupby(['A', 'B']).C.sum().reset_index()
A B C
0 x y 9
1 y z 5
2 z z 6