Python数据帧组合行,前两列值反转

时间:2017-10-19 19:33:56

标签: python pandas dataframe

我是Python的新手,非常感谢您的帮助!我有一个包含三列的数据框,并希望将前两列具有相同关联的行组合在一起(即,在列A中与列B在这种情况下并不重要)并在第三列中对它们的值求和。例如,从此数据框开始:

A    B    C

x    y    5

z    z    6

y    x    4

z    y    3

y    z    2

我希望能够生成这样的数据框(将x yy 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]

1 个答案:

答案 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