【问题标题】: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'])
  • 谢谢,如果你能写成答案,我会接受它作为解决方案。

标签: python pandas


【解决方案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

并且仍然需要双倍的记忆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多