我有一个df
包含这些列的数据框:
Group
Year
Gender
Feature_1
Feature_2
Feature_3
...
Run Code Online (Sandbox Code Playgroud)
后面我想用MultiIndex来堆叠数据,我尝试了这样的方式:
df.index = pd.MultiIndex.from_arrays([df['Group'], df['Year'], df['Gender']])
Run Code Online (Sandbox Code Playgroud)
该指令成功地为我的数据框创建了多重索引,但是有没有更好的方法来删除原始列?
pandas 中的索引比这更容易。您不需要创建自己的 MultiIndex 类实例。
pandas DataFrame 有一个名为 的方法.set_index()
,它接受单个列作为参数或列列表。提供列列表将为您设置多重索引。
像这样:
df.set_index(['Group', 'Year', 'Gender'], inplace=True)
Run Code Online (Sandbox Code Playgroud)
请注意inplace=True
,我强烈推荐它。
当您处理几乎无法容纳内存的巨大数据帧时,就地操作将使内存使用量减少一半。
考虑一下:
df2 = df1.set_index('column') # Don't do this
del df1 # Don't do this
Run Code Online (Sandbox Code Playgroud)
当此操作完成后,内存使用量将与之前大致相同。但这只是因为我们这样做del df1
。在这两个命令之间的时间内,将存在同一数据帧的两个副本,因此,双倍内存。
这样做是隐式相同的:
df1 = df1.set_index('column') # Don't do this either
Run Code Online (Sandbox Code Playgroud)
并且仍然需要双重记忆来就地执行此操作。
归档时间: |
|
查看次数: |
6102 次 |
最近记录: |