如何用熊猫中的交换值按两列分组?

时间:2018-10-12 10:27:33

标签: python pandas

我想按交换规则适用的列分组。

例如 column 1column 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

我尝试在交换元素之后应用分组。但是我没有任何方法可以解决这个问题。帮我解决这个问题。

谢谢。

1 个答案:

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