【问题标题】:Combining MultiIndex columns with similar root names in Pandas/Python在 Pandas/Python 中组合具有相似根名称的 MultiIndex 列
【发布时间】:2017-01-27 01:50:25
【问题描述】:

我有一个 MultiIndex 数据框,其顶级列名为:

Col1_1 | Col1_2 |上校 2_1 | 2_2 栏 | ... |

我希望将 Col1_1 与 Col1_2 组合为 Col1。我也可以在创建 MultiIndex 之前执行此操作,但原始数据更绘制为:

Col1_1.aspect1 | Col1_1.aspect 2 | Col1_2.aspect1 | Col1_2.aspect2 | ... |

其中 'aspect1' 和 'aspect2' 成为 MultiIndex 中的子列。

如果我能澄清任何事情,请告诉我,非常感谢。

预期结果将两者结合为Sample1;任何数量的方法都可以,包括堆叠/连接数据,输出摘要状态,例如mean() 等。

【问题讨论】:

  • 分享 df.head()
  • 我以前发现过类似的问题,例如stackoverflow.com/questions/41221079/… ,但我不认为这完全适合这个问题。
  • 再次,分享一个样本并分享您预期结果的示例
  • :) 我们评论了〜正如您从时间戳中看到的那样,我没有忽略您的共享请求。我已经上传了 df 的片段(它包含数百列,数千行)。如上所述,许多输出都可以在这里工作。谢谢。
  • 谢谢,所以基本上你的实际列是什么意思?您是否想将 sample11 和 sample12 中的 gtype、score 等列合并到一个唯一列中?或者别的什么

标签: python pandas grouping multi-index


【解决方案1】:

您可以使用groupby 并对其应用聚合函数,例如mean。 您必须根据轴 1(列)和级别 1(较低的多索引列)进行分组。它将在所有样本中应用分组。如果这是您想要实现的目标,请简单地做一个平均值:

df.groupby(level=1, axis=1).mean()

【讨论】:

  • 谢谢!了解“级别”对于像我这样的 Python 新手来说真的很有帮助。这是一个很好的开始,尽管我收到:'DataError: No numeric types to aggregate'。我会看看是否能找到问题,然后在此处添加并标记为已接受以将其关闭。
  • 这可能是因为您的文本列:在分组之前将它们从数据框中过滤掉
猜你喜欢
  • 2020-10-25
  • 1970-01-01
  • 2020-05-10
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 2022-10-18
  • 2022-09-30
相关资源
最近更新 更多