python - 如何在 Pandas 中用交换值按两列分组?

标签 python pandas

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

例如 第 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/

相关文章:

python - 测试功能打印行为

python - matplotlib 出条形图的两个图例

python - 按两列中的值分组并在 Pandas 中进行过滤

python - 如何修复 Python 中的 ARIMA 模型错误

python - 删除数据框中所有数据点中的多余字符

python - Flask-Socketio 不从外部 RQ 进程发出

python - 在 Pandas 中生成给定范围内的随机日期

python - 连接两个数值以使用 Pandas 创建一个新列?

python - Groupby 和 any() |全部()

python - Pandas:列和索引之间的多索引应用功能