【问题标题】:When to use a custom index rather than ordinary columns in Pandas何时在 Pandas 中使用自定义索引而不是普通列
【发布时间】:2017-11-22 12:14:38
【问题描述】:

在 pandas 中,您可以使用 set_index() 将默认的基于整数的索引替换为由任意数量的列组成的索引。

不过,让我感到困惑的是,什么时候你想要这样做。无论系列是列还是索引的一部分,您都可以使用boolean indexing 过滤列中的值,或使用xs() 过滤行中的值。您可以使用sort_values()sort_index() 对列或索引进行排序。

我遇到的唯一真正区别是索引在存在重复值时会出现问题,因此使用索引似乎更具限制性,如果有的话。

那么,为什么我想在 Pandas 中将我的列转换为索引?

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    在我看来,自定义索引有利于快速选择数据。

    它们也可用于对齐 mappingaritmetic operations(其中索引用于数据对齐)的数据、joining 数据以及每组获得最小或 maximal rows

    DatetimeIndex 适合partial string indexing,适合resampling

    但你是对的,重复索引是有问题的,尤其是reindexing

    Docs:

    • 使用对分析、可视化和交互式控制台显示很重要的已知指标识别数据(即提供元数据)
    • 启用自动和显式数据对齐
    • 允许直观地获取和设置数据集的子集

    您也可以查看Modern pandas - Indexesdirect link

    【讨论】:

    • 好电话,引用索引文档。我什至从未注意到那段
    • 谢谢。我尝试添加有时使用的所有方式,但我相信还有更多需要设置索引的情况。
    【解决方案2】:

    从 0.20.2 开始,某些方法(例如 .unstack())仅适用于索引。

    自定义索引,尤其是按时间索引,特别方便。除了在需要DateTimeIndex 的任何时间间隔内重新采样和聚合(后者使用.groupby()pd.TimeGrouper() 完成),您可以在列上调用.plot() 方法,例如df['column'].plot() 并立即获得时间序列图。

    最有用的是对齐:例如,假设您有两组数据要添加;它们的标签一致,但以不同的顺序排序。如果您将它们的标签设置为其数据框的索引,您可以简单地将数据框添加在一起,而不必担心数据的顺序。

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 2020-02-14
      • 2019-02-07
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      相关资源
      最近更新 更多