将大熊猫中的字符串值替换为其计数

时间:2019-01-29 13:48:39

标签: python pandas dataframe

我正在尝试计算数据帧中某些值的计数

user_id  event_type
    1         a   
    1         a  
    1         b
    2         a
    2         b
    2         c

我想得到像这样的桌子

user_id  event_type  event_type_count  
    1         a           2              
    1         a           2              
    1         b           1              
    2         a           1              
    2         b           1              
    2         c           2
    2         c           2

换句话说,我想在数据框中插入数值计数而不是数值。 我曾经尝试使用df.join(pd.crosstab)...,但是却得到了一个包含许多列的大型数据框。

哪种方法可以更好地解决此问题?

1 个答案:

答案 0 :(得分:4)

两个列中的GroupBy.transform使用GroupBy.size

df['event_type_count'] = df.groupby(['user_id','event_type'])['event_type'].transform('size')
print (df)
   user_id event_type  event_type_count
0        1          a                 2
1        1          a                 2
2        1          b                 1
3        2          a                 1
4        2          b                 1
5        2          c                 2
6        2          c                 2