我想按适用交换规则的列进行分组。
例如
第 1 列
、第 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
我尝试在交换元素后应用分组。但是我没有任何方法来解决这个问题。帮我解决这个问题。
提前致谢。
最佳答案
使用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
关于python - 如何在 Pandas 中用交换值按两列分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52777551/