pui*_*ais 5 python multi-index dataframe pandas reindex
我现在花了数小时浏览各处,以尝试从pandas的数据框创建多索引。这是我拥有的数据框(发布excel工作表模型。我在pandas数据框中确实有此框):
这就是我想要的:
我试过了
newmulti = currentDataFrame.set_index(['user_id','account_num'])
Run Code Online (Sandbox Code Playgroud)
但是它返回一个数据框,而不是一个多索引。另外,我不知道如何将'user_id'级别设置为0,将'account_num'级别设置为1。我认为这一定是微不足道的,但是我已经阅读了很多文章,教程等,但仍然无法弄清楚。部分原因是我是一个非常视觉化的人,而大多数职位都不是。请帮忙!
groupby在这种情况下,您可以简单地使用它,当它沿请求的列对销售额进行求和时,它将自动创建多索引。
df.groupby(['user_id', 'account_num', 'dates']).sales.sum().to_frame()
Run Code Online (Sandbox Code Playgroud)
您还应该能够简单地做到这一点:
df.set_index(['user_id', 'account_num', 'dates'])
Run Code Online (Sandbox Code Playgroud)
尽管您可能希望通过将它们相加来避免任何重复(例如,两行或更多行具有相同user_id,account_num且date值但销售数字不同),但这就是为什么我建议使用的原因groupby。
如果您需要多索引,则可以简单地访问viat new_df.index,这new_df是通过上述两个操作之一创建的新数据框。
而user_id将是0级,并account_num为1级。
为了澄清未来的用户,我想添加以下内容:
正如亚历山大所说,
df.set_index(['user_id', 'account_num', 'dates'])
Run Code Online (Sandbox Code Playgroud)
可能可以inplace=True完成这项工作。
给予type(df)
pandas.core.frame.DataFrame
Run Code Online (Sandbox Code Playgroud)
而这type(df.index)确实是预期的
pandas.core.indexes.multi.MultiIndex
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6579 次 |
| 最近记录: |