Python 在数据帧上设置多索引的最佳方法

Python 在数据帧上设置多索引的最佳方法,python,pandas,Python,Pandas,我有一个带有以下列的数据框df: Group Year Gender Feature_1 Feature_2 Feature_3 ... 我想稍后使用MultiIndex来堆叠数据,我尝试了以下方法: df.index = pd.MultiIndex.from_arrays([df['Group'], df['Year'], df['Gender']]) 此指令成功地为我的数据帧创建了多索引,但是否有更好的方法同时删除原始列?在pandas中建立索引比这更容易。您不需要创建自己的MultiI

我有一个带有以下列的数据框
df

Group
Year
Gender
Feature_1
Feature_2
Feature_3
...
我想稍后使用MultiIndex来堆叠数据,我尝试了以下方法:

df.index = pd.MultiIndex.from_arrays([df['Group'], df['Year'], df['Gender']])

此指令成功地为我的数据帧创建了多索引,但是否有更好的方法同时删除原始列?

在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
完成此操作后,内存使用量将与以前大致相同。但这只是因为我们做了
deldf1
。在这两个命令之间的时间内,将有两个相同数据帧的副本,因此,双内存

这样做隐含着相同的含义:


而且仍然需要两倍的内存。使用
df=df。设置索引(['Group','Year','Gender'))
谢谢,如果你能写下答案,我会接受它作为解决方案。
df1 = df1.set_index('column') # Don't do this either