我有以下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')
但不知道如何按两列分组。
答案 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