ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用Pandas在Python中对数据框的行子集进行分组

2019-11-11 05:07:47  阅读:231  来源: 互联网

标签:pandas-groupby pandas python-3-x python


我从包含30万行的数据集中得到以下数据框:

    CustomerID  Revenue
0   17850.0     15.30
1   17850.0     11.10
2   13047.0     17.85
3   13047.0     17.85
4   17850.0     20.34
5   13047.0     12.60
6   13047.0     12.60
7   13047.0     31.80
8   17850.0     20.34
9   17850.0     15.30
10  13047.0     9.90
11  13047.0     30.00
12  13047.0     31.80
13  12583.0     40.80
14  12583.0     39.60
15  13047.0     14.85
16  13047.0     14.85
17  12583.0     15.60
18  12583.0     45.00
19  12583.0     70.80

CustomerID值分批重复.例如,前两行中包含的CustomerID值17850可能会稍后在数据集中的某个位置再次出现.
我正在尝试按相同的客户ID对行的子集进行分组,并汇总该组的收入.我要执行的数据框转换应如下所示:

   CustomerID   TotalRevenue
0   17850.0      26.40
1   13047.0      35.70
2   17850.0      20.34
3   13047.0      57.0
4   17850.0      35.64
5   13047.0      71.7
6   12583.0      80.4
7   13047.0      29.7
8   12583.0     131.4

问题是如果我使用groupby方法将所有具有相同CustomerID值的行分组.因此,通过这种方式,它将整个数据帧中的所有17850个CustomerID值组合在一起,而不仅仅是前两行以及随后的其他CustomerID值.

衷心感谢您使用熊猫如何进行此操作的帮助.谢谢

解决方法:

df.groupby(['CustomerID',df.CustomerID.diff().ne(0).cumsum()],sort=False)['Revenue'].sum().rename_axis(['CustomerID','GID']).reset_index().drop('GID',axis=1)

输出:

   CustomerID  Revenue
0     17850.0    26.40
1     13047.0    35.70
2     17850.0    20.34
3     13047.0    57.00
4     17850.0    35.64
5     13047.0    71.70
6     12583.0    80.40
7     13047.0    29.70
8     12583.0   131.40

标签:pandas-groupby,pandas,python-3-x,python
来源: https://codeday.me/bug/20191111/2017685.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有