當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas DataFrame set_index方法用法及代碼示例


Pandas 的 DataFrame.set_index(~) 使用其列之一設置 DataFrame 的索引。

參數

1.keys | stringarray-likelist<string>

用於索引的列的名稱。

2. drop | boolean | optional

  • 如果是 True ,則用於索引的列將被刪除。

  • 如果 False ,則該列將被保留。

默認情況下,drop=True

3. append | boolean | optional

  • 如果是True,那麽列將被追加到當前索引。

  • 如果 False ,則列將替換當前索引。

默認情況下,append=False

4. inplace | boolean | optional

  • 如果是True,則源DataFrame將被修改並返回。

  • 如果False,則將返回新的DataFrame。

默認情況下,inplace=False

5. verify_integrity | boolean | optional

  • 如果是 True ,那麽如果新索引有重複項,則會引發錯誤。

  • 如果 False ,則允許重複索引。

默認情況下,verify_integrity=False

返回值

具有新索引的DataFrame

例子

考慮以下 DataFrame :

df = pd.DataFrame({"A":[1,2], "B":[3,4], "C":[5,6]})
df



   A  B  C
0  1  3  5
1  2  4  6

將單個列設置為索引

要將 A 列設置為 df 的索引:

df.set_index("A")      # Returns a DataFrame



   B  C
A		
1  3  5
2  4  6

這裏,分配給索引的名稱是列標簽,即 "A"

設置多列作為索引

要將列 AB 設置為 df 的索引:

df.set_index(["A","B"])



      C
A  B	
1  3  5
2  4  6

這裏,DataFrame 最終有 2 個索引。

保留用於索引的列

要保留將用作索引的列,請設置 drop=False

df.set_index("A", drop=False)



   A  B  C
A			
1  1  3  5
2  2  4  6

請注意 A 列仍然存在。

作為參考,這裏再次df

df



   A  B  C
0  1  3  5
1  2  4  6

追加到當前索引

要將列附加到現有索引,請設置 append=True

df.set_index("A", append=True)



      B  C
   A		
0  1  3  5
1  2  4  6

請注意原始索引 [0,1] 是如何附加的。

就地設置索引

要就地設置索引,請提供 inplace=True

df.set_index("A", inplace=True)
df



   B
A	
1  3
2  4

如上麵的輸出所示,通過設置inplace=True,將直接修改源DataFrame。當您確定不需要源 DataFrame 時,請選擇設置 inplace=True,因為這將節省內存。

驗證完整性

考慮以下 DataFrame :

df = pd.DataFrame({"A":[1,1],"B":[3,4]})
df



   A  B
0  1  3
1  1  4

默認情況下, verify_integrity=False ,這意味著如果結果索引包含重複項,則不會引發錯誤:

df.set_index("A")   # verify_integrity=False



   B
A   
1  3
1  4

請注意新索引如何包含重複值(兩個 1 ),但沒有引發錯誤。

要在這種情況下拋出錯誤,請像這樣傳遞verify_integrity=True

df.set_index("A", verify_integrity=True)



ValueError: Index has duplicate keys: Int64Index([1], dtype='int64', name='A')

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | set_index method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。