2017-06-20 36 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()並立即獲得時間序列圖。

雖然最有用,但它是對齊的:例如,假設你有兩組數據需要添加;它們被標記爲一致,但按不同的順序排序。如果您將其標籤設置爲其數據框的索引,則可以簡單地將數據框添加到一起,而不用擔心數據的排序。