如何解决groupby cumsum 排序的数据框
我想按一列对数据框进行分组,然后在按第一列降序排列的另一列上应用累积和
df1:
id PRICE DEMAND
0 120 10
1 232 2
2 120 3
3 232 8
4 323 5
5 323 6
6 323 2
df2:
id PRICE DEMAND
0 323 13
1 232 23
2 120 36
我用两条指令来做,但我觉得只用一笔就可以完成
data = data.groupby('PRICE',as_index=False).agg({'DEMAND': 'sum'}).sort_values(by='PRICE',ascending=False)
data['DEMAND'] = data['DEMAND'].cumsum()
解决方法
在我看来,你所拥有的一切都很好。但是,如果您想将所有内容链接在一起,请先将 sort
然后 groupby
与 sort=False
连接起来,这样它就不会改变顺序。然后您可以在组内sum
并cumsum
结果系列
(df.sort_values('PRICE',ascending=False)
.groupby('PRICE',sort=False)['DEMAND'].sum()
.cumsum()
.reset_index())
PRICE DEMAND
0 323 13
1 232 23
2 120 36
另一种选择是sort
然后cumsum
然后drop_duplicates
:
(df.sort_values('PRICE',ascending=False)
.set_index('PRICE')
.DEMAND.cumsum()
.reset_index()
.drop_duplicates('PRICE',keep='last'))
PRICE DEMAND
2 323 13
4 232 23
6 120 36
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。