如何通过两个字段添加出现次数的列

时间:2019-05-07 08:16:35

标签: python pandas-groupby

我有以下df:

df = pd.DataFrame({'c1': [1,5,2,2,2,5],'c2':[2,2,2,2,1,2]})

   c1  c2
0   1   2
1   5   2
2   2   2
3   2   2
4   2   1
5   5   2

我试图得到

   c1  c2  c3
0   1   2   1
1   5   2   2
2   2   2   2
3   2   2   2
4   2   1   1
5   5   2   2

我从

开始
df['c3'] = df.groupby('c1')['c2'].transform('size')

但不知道如何按两列分组。

2 个答案:

答案 0 :(得分:1)

如果您只需要使用分组依据,则可以尝试以下操作

import pandas as pd

df = pd.DataFrame({'c1': [1,5,2,2,2,5],'c2':[2,2,2,2,1,2]})

print (df.groupby(['c1', 'c2']).size().reset_index(name='counts'))

答案 1 :(得分:0)

使用list.count

l = df.values.tolist()
df['c3'] = [l.count(i) for i in l]

输出:

   c1  c2  c3
0   1   2   1
1   5   2   2
2   2   2   2
3   2   2   2
4   2   1   1
5   5   2   2