日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Pandas reindex重置索引

 碼農(nóng)9527 2021-09-29

 重置索引(reindex)可以更改原DataFrame的行標(biāo)簽或列標(biāo)簽,并使更改后的行、列標(biāo)簽與DataFrame中的數(shù)據(jù)逐一匹配。通過重置索引操作,您可以完成對現(xiàn)有數(shù)據(jù)的重新排序。如果重置的索引標(biāo)簽在原DataFrame中不存在,那么該標(biāo)簽對應(yīng)的元素值將全部填充為NaN。

    重置行列標(biāo)簽

    看一組簡單示例:

import pandas as pdimport numpy as np
N=20df = 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()
})#重置行、列索引標(biāo)簽df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
print(df_reindexed)12345678910111213復(fù)制代碼類型:[python]

    輸出結(jié)果:

  A C   B0 2020-12-07  Medium NaN2 2020-12-09  Low NaN5 2020-12-12 High NaN1234復(fù)制代碼類型:[python]

    現(xiàn)有a、b兩個(gè)DataFrame對象,如果想讓a的行索引與b相同,您可以使用reindex_like()方法。示例如下:

import pandas as pdimport 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)123456復(fù)制代碼類型:[python]

    輸出結(jié)果:

 col1   col2   col30  1.776556 -0.821724 -1.2201951 -1.401443  0.317407 -0.6638482  0.300353 -1.010991  0.9391433  0.444041 -1.875384  0.8461124  0.967159  0.369450 -0.4141285  0.320863 -1.223477 -0.3371106 -0.933665  0.909382  1.12948112345678復(fù)制代碼類型:[python]

    上述示例,a會按照b的形式重建行索引。需要特別注意的是,a與b的列索引標(biāo)簽必須相同。

    填充元素值

    reindex_like()提供了一個(gè)可選的參數(shù)method,使用它來填充相應(yīng)的元素值,參數(shù)值介紹如下:

    pad/ffill:向前填充值;

    bfill/backfill:向后填充值;

    nearest:從距離最近的索引值開始填充。

    示例如下:

import pandas as pdimport 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行標(biāo)簽相同print(df2.reindex_like(df1))#向前填充print(df2.reindex_like(df1,method='ffill'))12345678復(fù)制代碼類型:[python]

    輸出結(jié)果:

#填充前
 col1   col2   col30  0.129055  0.835440  0.3830651 -0.357231  0.379293  1.2115492 NaN NaN NaN3 NaN NaN NaN4 NaN NaN NaN5 NaN NaN NaN#填充后
 col1   col2   col30  0.129055  0.835440  0.3830651 -0.357231  0.379293  1.2115492 -0.357231  0.379293  1.2115493 -0.357231  0.379293  1.2115494 -0.357231  0.379293  1.2115495 -0.357231  0.379293  1.21154912345678910111213141516復(fù)制代碼類型:[python]

    限制填充行數(shù)

    reindex_like()還提供了一個(gè)額外參數(shù)limit,該參數(shù)用來控制填充的最大行數(shù)。示例如下:

import pandas as pdimport 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))1234567復(fù)制代碼類型:[python]

    輸出結(jié)果:

 col1   col2   col30 -1.829469  0.310332 -2.0088611 -1.038512  0.749333 -0.0943352 NaN NaN NaN3 NaN NaN NaN4 NaN NaN NaN5 NaN NaN NaN

 col1   col2   col30 -1.829469  0.310332 -2.0088611 -1.038512  0.749333 -0.0943352 -1.038512  0.749333 -0.0943353 -1.038512  0.749333 -0.0943354 NaN NaN NaN5 NaN NaN NaN123456789101112131415復(fù)制代碼類型:[python]

    由上述示例可以看出,填充了2、3行缺失值,也就是只填充了2行數(shù)據(jù)。

    重命名標(biāo)簽

    rename()方法允許您使用某些映射(dict或Series)或任意函數(shù)來對行、列標(biāo)簽重新命名,示例如下:

import pandas as pdimport 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'}))123456復(fù)制代碼類型:[python]

    輸出結(jié)果:

 col1   col2   col30 -1.762133 -0.636819 -0.3095721 -0.093965 -0.924387 -2.0314572 -1.231485 -0.738667  1.4157243 -0.826322  0.206574 -0.7317014  1.863816 -0.175705  0.4919075  0.677361  0.870041 -0.636518

  c1  c2   col3
apple  -1.762133 -0.636819 -0.309572banana -0.093965 -0.924387 -2.031457durian -1.231485 -0.738667  1.4157243   -0.826322  0.206574 -0.7317014 1.863816 -0.175705  0.4919075 0.677361  0.870041 -0.636518123456789101112131415復(fù)制代碼類型:[python]

    rename()方法提供了一個(gè)inplace參數(shù),默認(rèn)值為False,表示拷貝一份原數(shù)據(jù),并在復(fù)制后的數(shù)據(jù)上做重命名操作。若inplace=True則表示在原數(shù)據(jù)的基礎(chǔ)上重命名。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多