您好,登錄后才能下訂單哦!
約定:
import pandas as pd
DataFrame對象的列和索引之間的轉化
我們常常需要將DataFrame對象中的某列或某幾列作為索引,或者將索引轉化為對象的列。pandas提供了set_index()/reset_index() 來供我們使用。
一、列轉化為索引
df1=pd.DataFrame({'X':range(5),'Y':range(5),'S':list("aaabb"),'Z':[1,1,2,2,2]}) df1
代碼結果:
S | X | Y | Z | |
---|---|---|---|---|
0 | a | 0 | 0 | 1 |
1 | a | 1 | 1 | 1 |
2 | a | 2 | 2 | 2 |
3 | b | 3 | 3 | 2 |
4 | b | 4 | 4 | 2 |
指定列為索引
df1.set_index('S')
代碼結果:
X | Y | Z | |
---|---|---|---|
S | |||
a | 0 | 0 | 1 |
a | 1 | 1 | 1 |
a | 2 | 2 | 2 |
b | 3 | 3 | 2 |
b | 4 | 4 | 2 |
指定多個列作為多級索引
df1.set_index(['S','Z'])
代碼結果:
X | Y | ||
---|---|---|---|
S | Z | ||
a | 1 | 0 | 0 |
1 | 1 | 1 | |
2 | 2 | 2 | |
b | 2 | 3 | 3 |
2 | 4 | 4 |
同時保留作為索引的列
df1.set_index(['S','Z'],drop=False)
代碼結果:
S | X | Y | Z | ||
---|---|---|---|---|---|
S | Z | ||||
a | 1 | a | 0 | 0 | 1 |
1 | a | 1 | 1 | 1 | |
2 | a | 2 | 2 | 2 | |
b | 2 | b | 3 | 3 | 2 |
2 | b | 4 | 4 | 2 |
二、索引轉化為列
df2=df1.set_index(['S','Z']) df2
代碼結果:
X | Y | ||
---|---|---|---|
S | Z | ||
a | 1 | 0 | 0 |
1 | 1 | 1 | |
2 | 2 | 2 | |
b | 2 | 3 | 3 |
2 | 4 | 4 |
將單個索引作為DataFrame對象的列
df2.reset_index('Z')
代碼結果:
Z | X | Y | |
---|---|---|---|
S | |||
a | 1 | 0 | 0 |
a | 1 | 1 | 1 |
a | 2 | 2 | 2 |
b | 2 | 3 | 3 |
b | 2 | 4 | 4 |
將多級索引作為列
df2.reset_index()
代碼結果:
S | Z | X | Y | |
---|---|---|---|---|
0 | a | 1 | 0 | 0 |
1 | a | 1 | 1 | 1 |
2 | a | 2 | 2 | 2 |
3 | b | 2 | 3 | 3 |
4 | b | 2 | 4 | 4 |
直接刪除對指定索引
df2.reset_index('Z',drop=True)
代碼結果:
X | Y | |
---|---|---|
S | ||
a | 0 | 0 |
a | 1 | 1 |
a | 2 | 2 |
b | 3 | 3 |
b | 4 | 4 |
直接對原DataFrame對象修改
df2.reset_index(inplace=True) df2
代碼結果:
S | Z | X | Y | |
---|---|---|---|---|
0 | a | 1 | 0 | 0 |
1 | a | 1 | 1 | 1 |
2 | a | 2 | 2 | 2 |
3 | b | 2 | 3 | 3 |
4 | b | 2 | 4 | 4 |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。