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

Original: https://www.cnblogs.com/lhjc/p/12807630.html
Author: unuliha
Title: 6 Dataframe 索引的修改

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/559791/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球