首页 > 解决方案 > 在熊猫数据框中成对计数

问题描述

我在 pandas 中寻找一种简单的方法来计算 2 列之间的所有成对组合。例如:

df

Col1    Col2   Freq
 A        B     1
 B        A     1
 A        C     1
 C        B     1
 C        A     1

预期输出:

Col1    Col2   Freq
 A        B     2
 A        C     2
 C        B     1

谢谢

标签: pythonpandas

解决方案


np.sortgroupby

主要技巧是在仅考虑列'Col1'和时对每一行进行排序'Col2'。我使用一些拆包技巧将排序的东西的第一列放入x,第二列放入y.

我可以将它们放在自己的列中,但这不是必需的,因为groupby允许按外部数组进行分组。所以我就是这么做的。

x, y = np.sort(df[['Col1', 'Col2']].to_numpy(), axis=1).T
df.Freq.groupby([x, y]).sum()

A  B    2
   C    2
B  C    1
Name: Freq, dtype: int64

推荐阅读