python - 将 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)...
,但我得到了一个包含许多列的大型数据框。
哪种方法更好地解决这个问题?
解决方案
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
推荐阅读
- javascript - 如何在 TypeScript 中包装的 addEventListener 调用中正确键入事件处理程序
- python - 重复 - 如何读取 json 文件夹数据?
- python - 尝试使用 Selenium 登录 Xbox/Microsoft,但从未按下登录按钮
- python - Z3,创建数据结构/类,使用 Datatype
- r - 嵌套 if-else 语句,只测试第一个条件
- javascript - 我如何在 React Native 中赶上解雇模态
- jsf - 使用 h:message 警告创建输入表
- java - Java:匹配 FTP 响应代码的正则表达式
- python - Python 无法导入序列号
- scala - Scala如何创建与函数同名的隐式对象