python pandas set_index()和reset_index()

1、pandas.DataFrame.set_index()

#將DataFrame中的列轉化爲行索引
DataFrame.set_index(keys,drop=True,
					append=False,inplace=False,
					verify_integrity=False) 

舉例說明


>df = pd.DataFrame.from_dict({"a":[1,1], "b":[2,2], "c":[3,3]})
>print(df) 
輸出
   a  b  c
0  1  2  3
1  1  2  3

將其中任意一列變成行索引,例如“a”

>df1 = df.set_index("a")
>print(df1)
輸出
   b  c
a      
1  2  3
1  2  3

也可以將多列變成行索引

>df2 = df.set_index(["a","b"])
>print(df2)
輸出
     c
a b   
1 2  3
  2  3

2、DataFrame.reset_index()

#重置DataFrame的索引,並使用默認索引。
#如果DataFrame有多個行索引,則此方法可以刪除一個或多個行索引級別,可以讓行索引變成列
DataFrame.reset_index(level=None, drop=False,
					  inplace=False, col_level=0, col_fill='')

其中,
level:只從行索引中刪除給定的索引級別,默認情況下刪除所有級別。level是原始df的index的層級,可用數字/名稱表示。用數字表示的時候,0代表第一級行索引,1代表第二級行索引,以此類推。
drop:True/False 表示釋放出來的行索引,變成列之後,是否要刪除。
col_level:將釋放出來的行索引作爲列,插入到指定的列級別位置,默認情況下,它被插入到第一層。col_level表示列的層級。
col_fill:將釋放出來的行索引作爲列,插入到指定的列級別位置,並且給該列設置列名,如果沒有設置,則重複其行索引名。
舉例說明

>df2
輸出
     c
a b   
1 2  3
  2  3

可以看出,df2的行索引有2級,分別是“a”和“b”。用名稱表示層級的話,就是level=‘a’、level=‘b’。用數字表示層級的話,就是level=0和level=1

#我們可以用下面的語句查看一個df的行索引的層級個數
>print(df2.index.levels)
輸出
[[1], [2]]
就是有2個的意思

將行索引“b”變成列,並且保留該列:行索引“b”的層級是level=1

>df2_1 = df2.reset_index(level=1) #level="b"和level=1是一樣的
>print(df2_1)
輸出
   b  c
a      
1  2  3
1  2  3
>df2_2 = df2.reset_index(level=1, drop=True)  #不保留該列
>print(df2_2)
輸出
   c
a   
1  3
1  3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章