首页 > 解决方案 > 将 pandas 中的字符串值替换为其计数

问题描述

我正在尝试计算数据框中某些值的计数,例如

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

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

哪种方法更好地解决这个问题?

标签: pythonpandasdataframe

解决方案


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

推荐阅读