我想按交换规则适用的列分组。
例如
column 1
,column 2
在第一行包含值(a,b)
,在另一行包含(b,a)
,那么我想对这两个记录进行分组以按操作进行分组。
输入:
From To Count
a1 b1 4
b1 a1 3
a1 b2 2
b3 a1 12
a1 b3 6
输出:
From To Count(+)
a1 b1 7
a1 b2 2
b3 a1 18
我尝试在交换元素之后应用分组。但是我没有任何方法可以解决这个问题。帮我解决这个问题。
谢谢。
答案 0 :(得分:2)
使用numpy.sort
对每一行进行排序:
cols = ['From','To']
df[cols] = pd.DataFrame(np.sort(df[cols], axis=1))
print (df)
From To Count
0 a1 b1 4
1 a1 b1 3
2 a1 b2 2
3 a1 b3 12
4 a1 b3 6
df1 = df.groupby(cols, as_index=False)['Count'].sum()
print (df1)
From To Count
0 a1 b1 7
1 a1 b2 2
2 a1 b3 18