2017-06-20 38 views
3

在熊猫中,您可以使用set_index()替换默认的基于整数的索引与由任意数量的列组成的索引。何时使用熊猫中的自定义索引而不是普通列

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

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

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

回答

2

在我看来,自定义索引很适合快速选择数据。

他们还用于mapping对准数据,aritmetic operations其中索引用于数据对齐,joining数据,并用于获得最小或maximal rows每组有用。

DatetimeIndex很适合partial string indexing,对于resampling

但是你是对的,重复索引是有问题的,特别是对于reindexing

Docs

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

你也可以检查Modern pandas - Indexesdirect link

+0

良好的电话,引用索引文件。我从来没有注意到该段落 – Miguel

+0

谢谢。我尝试添加所有有时使用的方法,但我相信在需要seting索引时会有更多的情况。 – jezrael

+0

@Miguel - 非常感谢您的编辑。 – jezrael

1

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

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

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