1. frame.reset_index()
情景:在循环读取数组时,是最常触及到数组索引的场景,
比如数组data_stfx想要逐条读取数组数据,操作如下:
for i in range(len(data_stfx)):
print(i, data_stfx.loc[i,:]) // data_stfx.loc[i,:] 获取索引为i的数据
i的值是从0开始,数组data_stfx的长度减1结束
如果数组data_stfx是有多个数组组合而成,并且保留了原本的索引,那么索引的值可能重复,
这时就需要重置索引。
方法:data_stfx.reset_index(drop=True)
2. frame.reindex()
可以对行和列索引,默认对行索引,加上关键字columns对列索引。
e.g:
import pandas as pd
data=[[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]]
df = pd.DataFrame(data,index=['d','b','c','a'])
print(df)
2.1 对行索引示例如下:
如果定义的索引数量超过了数据行数,则该索引行数据为NaN
df=df.reindex(['a','b','c','d','e'])
print(df)
如果定义的新索引是旧索引的子集,则索引在此起到条件作用,即没有定义的索引不被抓取
df=df.reindex(['b','c','a','e'])
print(df)
2.2 队列索引示例如下:
df=df.reindex(columns=[0,1,2,4,3])
print(df)
2.3插值处理:
对于index为有序的数据,我们有时候可能会进行一些插值处理,只需要在reindex加上method参数即可,参数如下表:
import pandas as pd
df = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
print(df)
df = df.reindex(range(6), method='ffill')
或者
df = df.reindex(range(6), method='pad')
print(df)
df = df.reindex(range(6), method='bfill')
或者
df = df.reindex(range(6), method='backfill')
print(df)