给出以下(完全矫枉过正的)数据框示例
import pandas as pd
import datetime as dt
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)
})
是否存在将两个不同的聚合函数应用于同一列的现有内置方法,而无需多次调用agg?
# Assume `function1` and `function2` are defined for aggregating.
df.groupby("dummy").agg({"returns":function1, "returns":function2})
显然,Python不允许重复键.有没有其他方式表达对agg的输入?也许元组列表[(列,函数)]可以更好地工作,以允许多个函数应用于同一列?但它似乎只接受一本字典.
除了定义一个仅应用其中的两个函数的辅助函数之外,还有一个解决方法吗? (无论如何,它如何与聚合一起工作?)
解决方法:
您只需将这些函数作为列表传递:
In [20]: df.groupby("dummy").agg({"returns": [np.mean, np.sum]})
Out[20]:
returns
sum mean
dummy
1 0.285833 0.028583
或者作为字典:
In [21]: df.groupby('dummy').agg({'returns':
{'Mean': np.mean, 'Sum': np.sum}})
Out[21]:
returns
Sum Mean
dummy
1 0.285833 0.028583
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。