2.Pandas的索引操作
索引对象是无法修改的,因此重建索引是指对索引的重新排序而不是重新命名,如果某个索引值不存在的话会引入缺失值。
重建索引
1.重建索引
import pandas as pd
import numpy as np
obj = pd.Series([3,4.5,9,0], index = ['a','c','b','d'])
print(obj)
obj.reindex(['a','b','c','d','e'])
》》》》》》结果:
a 3.0
c 4.5
b 9.0
d 0.0
dtype: float64
a 3.0
b 9.0
c 4.5
d 0.0
e NaN
dtype: float64
2.填充重建索引时引入的缺失值【前向与后向填充】
#填充缺失值
obj.reindex(['a','c','c','d','e'], fill_value=10)
》》》》》》结果:
a 3.0
c 4.5
c 4.5
d 0.0
e 10.0
dtype: float64
#前向填充和后向填充:method='ffill\bfill'
obj1 = pd.Series(['blue','red','black'], index = [0,2,4])
obj1.reindex(np.arange(6), method = 'ffill')
>>>>>结果:
0 blue
1 blue
2 red
3 red
4 black
5 black
dtype: object
obj2 = pd.Series(['blue','red','black'], index = [0,2,4])
obj2.reindex(np.arange(6), method = 'bfill')
>>>>>结果:
0 blue
1 red
2 red
3 black
4 black
5 NaN
dtype: object
3.reindex操作
参数 | 说明 |
---|---|
index | 用于索引的新序列 |
method | 插值(填充)方式【ffill[pad]、bfill[backfill]】 |
fill_value | 缺失值替换值 |
limit | 最大填充数 |
leve copy | 在Multiindex的指定级别上匹配简单索引,否则取决其子集默认为True,无论如何都复制;如果为False,则新旧相等时不复制 |
对于DataFrame,reindex可以修改(行)索引、列,或两个都修改。如果只传入一个序列,则结果中的行会重建索引。
更换索引
在DataFrame数据中,如果不想用默认的行索引,则可以在创建时通过Index参数来设置。有时希望将列数据作为索引,可以用set_index方法来实现。与set_index相反的是reset_index。
data = {
'name':['张飞', '孙尚香', '韩信', '貂蝉', '马超'],
'location':['游走', '下路', '打野', '中单', '上单'],
'dynasty':['蜀', '蜀', '战国', '汉', '蜀'],
'year':[1999, 2000, 2020, 2050, 3030]
}
df = pd.DataFrame(data, columns=['name','location','dynasty','address','year'],index=['a','b','c','d','e'])
df1 = df.set_index('dynasty')
print(df1)
name location address year
dynasty
蜀 张飞 游走 NaN 1999
蜀 孙尚香 下路 NaN 2000
战国 韩信 打野 NaN 2020
汉 貂蝉 中单 NaN 2050
蜀 马超 上单 NaN 3030