从现有数据框创建多索引

新手上路,请多包涵

我花了几个小时到处浏览,试图从 pandas 的数据框中创建一个多索引。这是我的数据框(发布 excel 表模型。我在 pandas 数据框中有这个):

有

这就是我想要的:

想

我努力了

newmulti = currentDataFrame.set_index(['user_id','account_num'])

但它返回一个数据框,而不是多索引。另外,我不知道如何使“user_id”级别为 0 和“account_num”级别为 1。我认为这一定是微不足道的,但我已经阅读了很多帖子、教程等,但仍然无法弄清楚。部分原因是我是一个非常注重视觉的人,而大多数帖子都不是。请帮忙!

原文由 puifais 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 373
2 个回答

在这种情况下,您可以简单地使用 groupby ,这将在对所请求列的销售额求和时自动创建多索引。

 df.groupby(['user_id', 'account_num', 'dates']).sales.sum().to_frame()

你也应该能够简单地做到这一点:

 df.set_index(['user_id', 'account_num', 'dates'])

尽管您可能想避免任何重复(例如,两行或更多行具有相同的 user_idaccount_numdate 将它们的销售额相加,但数字不同,其中的数字)这就是我推荐使用 groupby 的原因。

如果您需要多索引,您可以简单地访问 viat new_df.index 其中 new_df 是从上述两个操作之一创建的新数据帧。

并且 user_id 将是级别 0 和 account_num 将是级别 1。

原文由 Alexander 发布,翻译遵循 CC BY-SA 3.0 许可协议

为了澄清未来的用户,我想添加以下内容:

正如亚历山大所说,

 df.set_index(['user_id', 'account_num', 'dates'])

用一个可能的 inplace=True 完成这项工作。

type(df) 给出

pandas.core.frame.DataFrame

type(df.index) 确实是预期的

pandas.core.indexes.multi.MultiIndex

原文由 Eulenfuchswiesel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题