python - 双重分组后reset_index不重置索引
问题描述
当我使用 pandas groupby 按组对值求和并使用另一个 groupby 中的结果来计算每个子组中组总数的百分比时,我无法重置索引以通过切片访问列。如何访问列或重置索引?
test = pd.DataFrame({'Animal' : ['Falcon', 'Falcon','Parrot', 'Parrot','Mouse','Mouse'],'Type':['Bird', 'Bird', 'Bird', 'Bird', 'Rodent','Rodent'],'Count' : [380., 370., 24., 26., 1.9, 2.8]})
# second groupby gives a proportion of total animal counts within each type
gb = test.groupby(['Type','Animal']).sum().groupby(level=0).apply(lambda x: x / float(x.sum()))
当我取消堆叠时,我无法重置索引以便提取列
gb = gb.unstack().reset_index()
gb.loc['Animal']
导致错误,指示没有名为“动物”的列。
取消堆叠后如何重置以便我可以对列进行子集化(或重命名它们,现在可以替代)?
- 编辑示例 df 以更清楚地说明问题
解决方案
当我取消堆叠时,我无法重置索引以便提取列
gb.unstack() gb.loc['Animal']
您可以通过以下方式获取“动物”列:
gb.loc[:,'Animal']
或者
gb['Animal']
推荐阅读
- arrays - 将 OFFSET 与列数组一起使用,然后使用 SUMPRODUCT
- javascript - 如何检测完成淡出动画并调用函数?
- python-3.x - 在树莓派 4 中运行推理几秒钟后,openvino 崩溃
- kotlin - Kotlin 如何识别“使用”函数中的 lambda 接收器
- java - 扩展 JPanel 的类未在 JFrame 中显示
- tensorflow - 如何降低 GAN 中 G 和 D 的损失率?
- google-cloud-platform - 要使用不同名称重新创建的实例组
- amazon-web-services - 具有无服务器框架的私有 API 网关
- google-apps-script - 如何在没有用户交互的情况下从特定时间开始设置 2 个时间控制触发器?
- ios - 如何从 NSCoding 迁移到 NSSecureCoding