6 Dataframe 索引的修改


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'})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM