是否有一种内置的方式来应用两个不同的聚合函数f1, f2到同一个列df["returns"],而不必多次调用agg() ? 示例dataframe:
import pandas as pd
import datetime as dt
pd.np.random.seed(0)
df = pd.DataFrame({
"date" : [dt.date(2012, x, 1) for x in range(1, 11)],
"returns" : 0.05 * np.random.randn(10),
"dummy" : np.repeat(1, 10)
})
语法上是错误的,但直觉上是正确的做法是:
# Assume `f1` and `f2` are defined for aggregating.
df.groupby("dummy").agg({"returns": f1, "returns": f2})
显然,Python不允许复制键。有没有其他方式来表示agg()的输入?也许元组列表[(列,函数)]工作得更好,允许多个函数应用到同一列?但是agg()似乎只接受字典。 除了定义一个辅助函数来应用它里面的两个函数,还有其他的方法吗?(这将如何与聚合一起工作呢?) 问题来源StackOverflow 地址:/questions/59380335/how-can-i-improve-this-pandas-data-transformation-to-be-more-efficient
你可以简单地通过一个列表的功能:
In [20]: df.groupby("dummy").agg({"returns": [np.mean, np.sum]})
Out[20]:
mean sum
dummy
1 0.036901 0.369012
或者作为字典:
In [21]: df.groupby('dummy').agg({'returns':
{'Mean': np.mean, 'Sum': np.sum}})
Out[21]:
returns
Mean Sum
dummy
1 0.036901 0.369012
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。