分组并求和具有相同内容的行

时间:2019-06-18 13:31:32

标签: python python-3.x pandas pandas-groupby

我有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

1 个答案:

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