1.set_index
DataFrame可以通过set_index方法,可以设置单索引和复合索引。
DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
append添加新索引,drop为False,inplace为True时,索引将会还原为列
>>> import numpy as np
>>> import pandas as pd
>>> data = pd.DataFrame(np.random.randn(4,4),columns=list('abcd'))
>>> data
a b c d
0 0.408933 0.234216 -0.322709 -0.970609
1 -0.090428 0.404650 0.673531 0.006823
2 0.454332 0.964864 -0.551243 -1.163152
3 0.794767 0.152712 -1.150488 -0.993685
>>> index1 = data.set_index('c') % 将 c 列数据设为行的单索引
>>> index1
a b d
c
-0.322709 0.408933 0.234216 -0.970609
0.673531 -0.090428 0.404650 0.006823
-0.551243 0.454332 0.964864 -1.163152
-1.150488 0.794767 0.152712 -0.993685
>>> index3 = data.set_index(['b','c']) % 将 b 和 c 列数据设为行的复合索引
>>> index3
a d
b c
0.234216 -0.322709 0.408933 -0.970609
0.404650 0.673531 -0.090428 0.006823
0.964864 -0.551243 0.454332 -1.163152
0.152712 -1.150488 0.794767 -0.993685
>>> index3.index
MultiIndex([( 0.2342157856566715, -0.3227085909893056),
( 0.4046499952174707, 0.6735314795439666),
( 0.964864372341223, -0.5512425282648497),
(0.15271241202265382, -1.1504879395208476)],
names=['b', 'c'])
2.reset_index
reset_index可以还原索引,重新变为默认的整型索引
DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”)
level控制了具体要还原的那个等级的索引
drop为False则索引列会被还原为普通列,否则会丢失
>>> data
a b c d
0 0.408933 0.234216 -0.322709 -0.970609
1 -0.090428 0.404650 0.673531 0.006823
2 0.454332 0.964864 -0.551243 -1.163152
3 0.794767 0.152712 -1.150488 -0.993685
>>> data1 = data.reset_index()
>>> data1
index a b c d
0 0 0.408933 0.234216 -0.322709 -0.970609
1 1 -0.090428 0.404650 0.673531 0.006823
2 2 0.454332 0.964864 -0.551243 -1.163152
3 3 0.794767 0.152712 -1.150488 -0.993685
>>> data2 = data1.reset_index()
>>> data2
level_0 index a b c d
0 0 0 0.408933 0.234216 -0.322709 -0.970609
1 1 1 -0.090428 0.404650 0.673531 0.006823
2 2 2 0.454332 0.964864 -0.551243 -1.163152
3 3 3 0.794767 0.152712 -1.150488 -0.993685
>>> data2.iloc[1,1]
1
>>> data2.iloc[1,2]
-0.09042788786848317
>>> data2.iloc[1,0]
1