熊猫组通过多个列上的多个自定义汇总函数
给定数据:
GRP | Data1 | Data2 | Data3 |
---|---|---|---|
A | 2 | 1 | 2 |
A | 4 | 6 | 3 |
B | 3 | 2 | 1 |
B | 7 | 3 | 5 |
预期输出:
GRP | SUM(DATA1) | SUM(DATA2)/SUM/SUM(DATA1) | SUM(DATA3)/SUM/SUM(DATADA) |
---|---|---|---|
A | 6 | 1.16666667 | 0.83 |
A | 10 | 0.5 | 0.6 |
假设自定义聚合可以取决于多个列,并且并非总是一个简单的分裂操作。我知道使用SQL查询是可能的,但是如果可能的话,我对应用和汇总功能的答案感兴趣。
Given data:
grp | data1 | data2 | data3 |
---|---|---|---|
a | 2 | 1 | 2 |
a | 4 | 6 | 3 |
b | 3 | 2 | 1 |
b | 7 | 3 | 5 |
Expected output:
grp | sum(data1) | sum(data2)/sum(data1) | sum(data3)/sum(data1) |
---|---|---|---|
a | 6 | 1.166666667 | 0.83 |
a | 10 | 0.5 | 0.6 |
Assume custom aggregation can be dependent on multiple columns and not always a simple division operation. I know using SQL query it's possible, but I am interested in an answer with apply and aggregate function if possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在此处使用 groupby + allocate 来生成所需的聚合。您可以应用所需的任何聚合函数。
You can use groupby + assign here to generate required aggregations. You can apply whatever aggregate function is needed.
您可以执行以下操作:
或更经典的操作:
输出:
多重聚合
您可以对 MultiIndex:
输出使用相同的逻辑:
You could do:
or more classically:
output:
multiple aggregation
You can use the same logic with a MultiIndex:
output: