使用熊猫计算两列之间的组合

时间:2021-01-16 22:52:37

标签: python pandas

我有一个这样的数据框:

<头>
1 2
A B
B A
C D
C D
D C

我希望能够计算这样的组合实例的数量:

<头>
字母 计数
AB 2
光盘 3

所以本质上,为了计算出现次数,我希望能够将 CD 和 DC 计算为同一个实例。

我试过了

df.groupby(['1','2']).size().reset_index().rename(columns={0:'count'})

但这并不像 BA 那样计算 AB,而是分别计算它们的出现次数。如果有人对如何做到这一点有任何建议,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

由于您没有将计数返回到原始 df,因此您可以先进行排序。

df.values.sort()
df['letters'] = df['1'].astype(str) + df['2'].astype(str)
df.groupby('letters').size().reset_index(name='count')

输出

    letters count
0        AB   2
1        CD   3

答案 1 :(得分:1)

另一种类似于 Chris 的方法是使用 stackgroupby

s = df.stack().sort_values().groupby(level=0).agg(''.join).to_frame('Letters')

s.groupby('Letters',as_index=False).agg(Count=('Letters','size'))

Letters  Count
0      AB      2
1      CD      3
相关问题