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