python - 如何在熊猫中分组后压缩行
问题描述
我在我的数据框上执行了 groupby。
grouped = data_df.groupby(['Cluster','Visit Number Final'])['Visitor_ID'].count()
我得到以下输出:
data_df.groupby(['Cluster','Visit Number Final'])['Visitor_ID'].count()
出[81]:
Cluster Visit Number Final
0 1 21846
2 1485
3 299
4 95
5 24
6 8
7 3
1 1 33600
2 2283
3 404
4 117
5 34
6 7
2 1 5858
2 311
3 55
4 14
5 6
6 3
7 1
3 1 19699
2 1101
3 214
4 78
5 14
6 8
7 3
4 1 10086
2 344
3 59
4 14
5 3
6 1
Name: Visitor_ID, dtype: int64
现在我想压缩访问次数最终> 3的行(添加一个新行,其中包含最终访问次数 4、5、6 的总和)。我正在尝试 groupby.filter 但没有得到预期的输出。我的最终输出应该看起来像
Cluster Visit Number Final
0 1 21846
2 1485
3 299
>=4 130
1 1 33600
2 2283
3 404
>=4 158
2 1 5858
2 311
3 55
>=4 24
3 1 19699
2 1101
3 214
>=4 103
4 1 10086
2 344
3 59
>=4 18
解决方案
最简单的方法是在对数据框进行分组之前替换大于 3 的“最终访问次数”值:
df.loc[df['Visit Number Final'] > 3, 'Visit Number Final'] = '>=4'
df.groupby(['Cluster','Visit Number Final'])['Visitor_ID'].count()
推荐阅读
- java - Firebase - Firestore 数据查询两次调用两次
- android - JSON 解析需要 30 秒
- c# - .Net Core 响应重定向另一个视图
- java - 无法在 adb shell 中使用 su 命令
- sql - 从一系列带有日期的发票中,我如何按发票月份和上一个发票月份汇总它们?
- sql - ORA-00904: "TYPE": 触发器上的标识符无效。我哪里出错了?
- cordova - 在科尔多瓦与 whatsapp 共享音频文件
- sql - oracle中带有时间的随机日期
- ios - 使用 UIBezierPath 的平行四边形视图
- python - 循环脚本以生成多个图像