我有3列带有数值的数据框,前两列是一个包含两个元素的集合。我想将这2列的行视为一个集合(包含相同的元素),并按+ sum分组:
df.groupby([A,B]).sum() --- won't work here
示例:
A B counter
750 1334 10
1080 1920 15
1080 1920 10
1920 1080 10
1125 2436 20
结果:
A B counter
750 1334 10
1080 1920 35
1125 2436 20
答案 0 :(得分:3)
想法正在按numpy.sort
对两列进行排序,然后重新分配:
df[['A','B']] = np.sort(df[['A','B']], axis=1)
df = df.groupby(['A','B'], as_index=False)['counter'].sum()
print (df)
A B counter
0 750 1334 10
1 1080 1920 35
2 1125 2436 20
或分配给传递给groupby
的数组:
arr = np.sort(df[['A','B']], axis=1)
df = df.groupby([arr[:, 0],arr[:, 1]])['counter'].sum().rename_axis(('A','B')).reset_index()
print (df)
A B counter
0 750 1334 10
1 1080 1920 35
2 1125 2436 20