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

时间:2014-05-12 20:49:44

标签: 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']])

这条指令成功地为我的Dataframe创建了MultiIndex,但还有更好的方法可以删除原始列吗?

1 个答案:

答案 0 :(得分:0)

大熊猫索引比这更容易。您不需要创建自己的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

并且仍然需要双重记忆才能实现这一目标。