Pandas中DataFrame的基本操作之重新索引講解

Pandas DataFrame之重新索引

1.reindex可以對行和列索引

默認對行索引,加上關鍵字columns對列索引。

import pandas as pd
data=[[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]]
df = pd.DataFrame(data,index=['d','b','c','a'])
print(df)

默認對列索引:如果是新的索引名將會用NaN

df=df.reindex(['a','b','c','d','e'])
print(df)

加上關鍵字columns對列重新索引:

df=df.reindex(columns=[2,1,3,4,0])
print(df)

2.reindex插值處理

對於index為有序的數據,我們有時候可能會進行一些插值處理,隻需要在reindex加上method參數即可,參數如下表

(圖片來源:截圖於 利用python進行數據分析 Wes McKinney 著)

例子:

import pandas as pd 
data=[[1,1,1,1],[2,2,2,2],[3,3,3,3]]
df = pd.DataFrame(data,index=range(3))
print(df)
df=df.reindex([0,1,2,3,4,5],method='ffill')
print('--------------')
print(df)

reindex函數的相關參數:

(圖片來源:截圖於 利用python進行數據分析 Wes McKinney 著)

Pandas DataFrame重置索引案例

import pandas as pd
import numpy as np
a=pd.DataFrame(np.random.randint(1,10,20).reshape(4,5))
print(a)
   0  1  2  3  4
0  1  3  2  7  6
1  8  2  2  7  2
2  2  6  6  2  5
3  4  1  6  8  9
b=a.sort_values(by=4)
print(b)
   0  1  2  3  4
1  8  2  2  7  2
2  2  6  6  2  5
0  1  3  2  7  6
3  4  1  6  8  9
### 重置索引:方法1
c=a.sort_values(by=4,ignore_index=True)
print(c)
   0  1  2  3  4
0  8  2  2  7  2
1  2  6  6  2  5
2  1  3  2  7  6
3  4  1  6  8  9
### 重置索引:方法2
d=b.reset_index(drop=True)
print(d)
   0  1  2  3  4
0  8  2  2  7  2
1  2  6  6  2  5
2  1  3  2  7  6
3  4  1  6  8  9

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: