之前我曾问过这个问题:python pandas: applying different aggregate functions to different columns 但是熊猫https://github.com/pandas-dev/pandas/pull/15931的最新变化 意味着我认为优雅和pythonic的解决方案已被弃用,原因我真的不明白。
问题是,现在仍然是:在进行groupby时,如何将不同的聚合函数应用于不同的字段(例如x的总和,x的平均值,y的最小值,z的最大值等)并重命名结果领域,一气呵成,或者至少以一种可能的pythonic而不是太麻烦的方式?即sum_x不会这样做,我需要明确重命名字段。
这种方法,我喜欢:
df.groupby('qtr').agg({"realgdp": {"mean_gdp": "mean", "std_gdp": "std"},
"unemp": {"mean_unemp": "mean"}})
将被弃用,现在会产生此警告:
FutureWarning: using a dict with renaming is deprecated and will be removed in a future version
谢谢!
答案 0 :(得分:2)
agg(),但使用agg重命名是。
弃用的内容: 1.将dict传递给分组/滚动/重采样系列,允许其重命名生成的聚合 2.将dict-of-dicts传递给分组/滚动/重新采样的DataFrame。
虽然它不是一行代码
,但这样可行df.groupby('qtr').agg({"realgdp": ["mean", "std"], "unemp": "mean"})
df.columns = df.columns.map('_'.join)
df.rename(columns = {'realgdp_mean': 'mean_gdp', 'realgdp_std':'std_gdp', 'unemp_mean':'mean_unemp'}, inplace = True)