在熊猫数据框上设置多索引的最佳方法
Posted
技术标签:
【中文标题】在熊猫数据框上设置多索引的最佳方法【英文标题】:Best way to set a multiindex on a pandas dataframe 【发布时间】:2021-01-17 04:07:38 【问题描述】:我有一个包含这些列的 Dataframe df
:
Group
Year
Gender
Feature_1
Feature_2
Feature_3
...
以后想用MultiIndex来堆叠数据,我试过这样:
df.index = pd.MultiIndex.from_arrays([df['Group'], df['Year'], df['Gender']])
这条指令成功地为我的数据框创建了 MultiIndex,但是有没有更好的方法也可以删除原始列?
【问题讨论】:
使用df = df.set_index(['Group', 'Year', 'Gender'])
谢谢,如果你能写成答案,我会接受它作为解决方案。
【参考方案1】:
pandas 中的索引比这更容易。您不需要创建自己的 MultiIndex 类实例。
pandas DataFrame 有一个名为 .set_index()
的方法,该方法将单个列作为参数或列列表。提供列列表将为您设置多索引。
像这样:
df.set_index(['Group', 'Year', 'Gender'], inplace=True)
注意inplace=True
,我强烈推荐。
当您处理几乎无法放入内存的庞大数据帧时,就地操作将几乎您的内存使用量的一半。
考虑一下:
df2 = df1.set_index('column') # Don't do this
del df1 # Don't do this
完成此操作后,内存使用量将与之前大致相同。但仅仅是因为我们这样做了del df1
。在这两个命令之间的时间里,会存在同一个数据帧的两个副本,因此,内存是双倍的。
这样做其实是一样的:
df1 = df1.set_index('column') # Don't do this either
并且仍然需要双倍的记忆。
【讨论】:
以上是关于在熊猫数据框上设置多索引的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章