Pandas reindex重置索引的使用
重置索引(reindex)可以更改原 DataFrame 的行標簽或列標簽,并使更改后的行、列標簽與 DataFrame 中的數(shù)據(jù)逐一匹配。通過重置索引操作,您可以完成對現(xiàn)有數(shù)據(jù)的重新排序。如果重置的索引標簽在原 DataFrame 中不存在,那么該標簽對應(yīng)的元素值將全部填充為 NaN。
重置行列標簽
看一組簡單示例:
import pandas as pd import numpy as np N=20 df = pd.DataFrame({ 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'), 'x': np.linspace(0,stop=N-1,num=N), 'y': np.random.rand(N), 'C': np.random.choice(['Low','Medium','High'],N).tolist(), 'D': np.random.normal(100, 10, size=(N)).tolist() }) #重置行、列索引標簽 df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B']) print(df_reindexed)
輸出結(jié)果:
A C B
0 2020-12-07 Medium NaN
2 2020-12-09 Low NaN
5 2020-12-12 High NaN
現(xiàn)有 a、b 兩個 DataFrame 對象,如果想讓 a 的行索引與 b 相同,您可以使用 reindex_like() 方法。示例如下:
import pandas as pd import numpy as np a = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3']) b = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3']) a= a.reindex_like(b) print(a)
輸出結(jié)果:
col1 col2 col3
0 1.776556 -0.821724 -1.220195
1 -1.401443 0.317407 -0.663848
2 0.300353 -1.010991 0.939143
3 0.444041 -1.875384 0.846112
4 0.967159 0.369450 -0.414128
5 0.320863 -1.223477 -0.337110
6 -0.933665 0.909382 1.129481
上述示例,a 會按照 b 的形式重建行索引。需要特別注意的是,a 與 b 的列索引標簽必須相同。
填充元素值
reindex_like() 提供了一個可選的參數(shù)method,使用它來填充相應(yīng)的元素值,參數(shù)值介紹如下:
pad/ffill:向前填充值;
bfill/backfill:向后填充值;
nearest:從距離最近的索引值開始填充。
示例如下:
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3']) #使df2和df1行標簽相同 print(df2.reindex_like(df1)) #向前填充 print(df2.reindex_like(df1,method='ffill'))
輸出結(jié)果:
#填充前
col1 col2 col3
0 0.129055 0.835440 0.383065
1 -0.357231 0.379293 1.211549
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
#填充后
col1 col2 col3
0 0.129055 0.835440 0.383065
1 -0.357231 0.379293 1.211549
2 -0.357231 0.379293 1.211549
3 -0.357231 0.379293 1.211549
4 -0.357231 0.379293 1.211549
5 -0.357231 0.379293 1.211549
限制填充行數(shù)
reindex_like() 還提供了一個額外參數(shù) limit,該參數(shù)用來控制填充的最大行數(shù)。示例如下:
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3']) print (df2.reindex_like(df1)) #最多填充2行 print (df2.reindex_like(df1,method='ffill',limit=2))
輸出結(jié)果:
col1 col2 col3
0 -1.829469 0.310332 -2.008861
1 -1.038512 0.749333 -0.094335
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaNcol1 col2 col3
0 -1.829469 0.310332 -2.008861
1 -1.038512 0.749333 -0.094335
2 -1.038512 0.749333 -0.094335
3 -1.038512 0.749333 -0.094335
4 NaN NaN NaN
5 NaN NaN NaN
由上述示例可以看出,填充了 2、3 行 缺失值,也就是只填充了 2 行數(shù)據(jù)。
重命名標簽
rename() 方法允許您使用某些映射(dict或Series)或任意函數(shù)來對行、列標簽重新命名,示例如下:
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) print (df1) #對行和列重新命名 print (df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'},index = {0 : 'apple', 1 : 'banana', 2 : 'durian'}))
輸出結(jié)果:
col1 col2 col3
0 -1.762133 -0.636819 -0.309572
1 -0.093965 -0.924387 -2.031457
2 -1.231485 -0.738667 1.415724
3 -0.826322 0.206574 -0.731701
4 1.863816 -0.175705 0.491907
5 0.677361 0.870041 -0.636518c1 c2 col3
apple -1.762133 -0.636819 -0.309572
banana -0.093965 -0.924387 -2.031457
durian -1.231485 -0.738667 1.415724
3 -0.826322 0.206574 -0.731701
4 1.863816 -0.175705 0.491907
5 0.677361 0.870041 -0.636518
rename() 方法提供了一個 inplace 參數(shù),默認值為 False,表示拷貝一份原數(shù)據(jù),并在復制后的數(shù)據(jù)上做重命名操作。若 inplace=True 則表示在原數(shù)據(jù)的基礎(chǔ)上重命名。
到此這篇關(guān)于Pandas reindex重置索引的使用的文章就介紹到這了,更多相關(guān)Pandas reindex重置索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
BeautifulSoup獲取指定class樣式的div的實現(xiàn)
這篇文章主要介紹了BeautifulSoup獲取指定class樣式的div的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12Python Pygame實戰(zhàn)之賽車游戲的實現(xiàn)
如今的游戲可謂是層出不窮,不過小編發(fā)現(xiàn),賽車游戲也是深受大家歡迎啊,像跑跑卡丁車、QQ飛車,還有主機游戲極品飛車系列。本文將用Python中的Pygame模塊制作一個簡單的賽車游戲,感興趣的可以了解一下2022-03-03python 解決print數(shù)組/矩陣無法完整輸出的問題
這篇文章主要介紹了關(guān)于python 解決print數(shù)組/矩陣無法完整輸出的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接方式
這篇文章主要介紹了http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Python實現(xiàn)將數(shù)據(jù)寫入netCDF4中的方法示例
這篇文章主要介紹了Python實現(xiàn)將數(shù)據(jù)寫入netCDF4中的方法,涉及Python數(shù)據(jù)處理與文件讀寫相關(guān)操作技巧,需要的朋友可以參考下2018-08-08