python - 如何将聚合函数应用于 Pandas 中数据透视表的所有列
问题描述
数据透视表正在计算一种现象的每月发生次数。这是简化的示例数据,后面是枢轴:
+--------+------------+------------+
| ad_id | entreprise | date |
+--------+------------+------------+
| 172788 | A | 2020-01-28 |
| 172931 | A | 2020-01-26 |
| 172793 | B | 2020-01-26 |
| 172768 | C | 2020-01-19 |
| 173219 | C | 2020-01-14 |
| 173213 | D | 2020-01-13 |
+--------+------------+------------+
我的 pivot_table 代码如下:
my_pivot_table = pd.pivot_table(df[(df['date'] >= some_date) & ['date'] <= some_other_date)],
values=['ad_id'], index=['entreprise'],
columns=['year', 'month'], aggfunc=['count'])
结果表如下所示:
+-------------+---------+----------+-----+----------+
| | 2018 | | | |
+-------------+---------+----------+-----+----------+
| entreprise | january | february | ... | december |
| A | 12 | 10 | ... | 8 |
| B | 24 | 12 | ... | 3 |
| ... | ... | ... | ... | ... |
| D | 31 | 18 | ... | 24 |
+-------------+---------+----------+-----+----------+
现在,我想添加一个列,为我提供月平均值,并执行其他操作,例如将上个月的计数与过去 12 个月的月平均值进行比较......
我试图摆弄 pivot_table 的 aggfunc 参数,并尝试将平均列添加到原始数据框中,但没有成功。
提前致谢!
解决方案
因为您可以使用Multiindex
后获得表格pivot_table
:
df1 = df.mean(axis=1, level=0)
df1.columns = pd.MultiIndex.from_product([df1.columns, ['mean']])
或者:
df2 = df.mean(axis=1, level=1)
df2.columns = pd.MultiIndex.from_product([['all_years'], df2.columns])
推荐阅读
- azure - 在 KUSTO 中找到 3 个候选者中的非空列并扩展为新列
- apache-spark - 以许可模式读取 json 文件 - PySpark 2.3
- vba - 关闭使用 OpenSharedItem 打开的电子邮件?
- java - 如何使用 Spring-boot 为控制器方法编写 JUnit 5 测试用例
- python - numpy.empty([]) 创建的数组的性质
- ruby-on-rails - 无法验证/创建输出存储桶
- ssis - SSIS的源/目标助手中的excel表中附加和不附加美元符号的文件有什么区别?
- pysimplegui - 有没有办法让 GUI 停留在全屏游戏之上?
- javascript - 反转成新数组 VS 原地反转
- javascript - 无法使用 VueJs 从 Mysql DB 获取数据