我有一个包含以下列的数据框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,但还有更好的方法可以删除原始列吗?
答案 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
并且仍然需要双重记忆才能实现这一目标。