6.1 reindex() 直接修改索引(相當於截取原 df 的子集)
N=20 df = pd.DataFrame({ 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),#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() }) #reindex the DataFrame,相當於截取了子集 df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])#重新構建df索引,形成新df
6.2 reindex_like() 修改索引(使兩個數據框的索引一樣)
### 將兩個數據框的索引長度設為一樣 df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3']) df1 = df1.reindex_like(df2)#將df1的索引長度截取到和df2 一樣,多出的被截斷 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.reindex_like(df1)#多出來的行為NaN df2.reindex_like(df1,method='ffill')#添加method參數表示對多出來的NaN進行填充,ffill前向填充,bfill后向填充 df2.reindex_like(df1,method='ffill',limit=1)#僅填充一行
6.3 rename() 重新命名索引
### 對數據框的行列重命名 df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) df1.rename(columns={'col1':'c1','col2':'c2','col3':'c3'}, index = {0:'apple',1:'banana',2:'durian'})