約定:
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 |
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 |
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 |
謝謝大家的瀏覽,
希望我的努力能幫助到您,
共勉!