python - 如何使用 pandas GroupBy 获取另一个组中的组总和?
问题描述
我有这个 MultiIndexed DataFrame:
- metric_1
cat_A date cat_B
foo 2019-03-18 blue 1
yellow 2
red 3
2019-03-19 blue 5
red 10
green 5
bar 2019-03-18 yellow 2
black 2
red 2
2019-03-19 red 1
blue 8
black 1
我想创建一个metric_2
单独metric_1
使用并除以特定日期和相应metric_1
.cat_B
cat_A
输出示例:
- metric_1 metric_2
cat_A date cat_B
foo 2019-03-18 blue 1 0.166
yellow 2 0.333
red 3 0.500
2019-03-19 blue 5 0.250
red 10 0.500
green 5 0.250
bar 2019-03-18 yellow 2 0.333
black 2 0.333
red 2 0.333
2019-03-19 red 1 0.100
blue 8 0.800
black 1 0.100
我正在尝试使用 等对级别求和sum(level = 0)
,sum(level = 1)
但它只需要整个级别的总和,我想我错过了一些东西。
提前致谢!
解决方案
使用reindex
df['New']=df['metric_1']/df['metric_1'].sum(level=[0,1],axis=0).reindex(df.index)
推荐阅读
- flutter - 如何为 futurebuilder 调用 setState
- python - 使用 LDA 进行主题建模
- android - 警报对话框按钮的内容说明
- vue.js - 用 Vue.js 初始化的 HTML 表:如何交替行颜色
- jquery - 从选项中拆分文本并替换
- c# - LINQ to Entities 无法识别方法 'System.String LetterType(Byte)' 方法,并且此方法无法转换为存储表达式
- bash - 使用 bash -c 获取执行的后台进程的 Pid
- reactjs - React - 组件的生命周期
- sql-server - SQL Server 查询从同一个表中提取两个不同的行
- excel - if语句为真后如何添加当前行的下边框?