Pandas中对Series和DataFrame进行重置索引的reindex方法
Pandas中提供了一个重置索引的reindex方法,它可以对Series和DataFrame进行重置索引。reindex方法的参数有index、method、fill_value、limit等,它们的作用分别是:
- index:重新索引的目标索引,可以是列表、数组或其他可迭代对象。
- method:插值方法,默认为None,即不插值,可选的插值方法有'ffill'、'bfill',分别表示用前一个值填充或用后一个值填充。
- fill_value:重新索引时,缺失值的填充值,默认为NaN。
- limit:当插值方法为ffill或bfill时,可以设定最大填充量。
Series的reindex方法
以下是Series的reindex方法的使用,以下代码建立了一个Series,其索引为0、1、2,值分别为1、2、3:
import pandas as pd s = pd.Series([1, 2, 3], index=[0, 1, 2]) print(s)
输出:
0 1 1 2 2 3 dtype: int64
使用reindex方法,将索引重新设置为0、2、3:
s.reindex([0, 2, 3])
输出:
0 1.0 2 3.0 3 NaN dtype: float64
可以看到,索引重新设置为0、2、3,但是索引为3的位置的值为NaN,因为原有的Series中没有索引为3的值,为了填充缺失的值,可以设置fill_value参数,令缺失值填充为0:
s.reindex([0, 2, 3], fill_value=0)
输出:
0 1.0 2 3.0 3 0.0 dtype: float64
可以看到,索引为3的位置的值已经填充为0,还可以设置method参数,令缺失值填充为前一个值或后一个值:
s.reindex([0, 2, 3], method='ffill')
输出:
0 1.0 2 3.0 3 3.0 dtype: float64
可以看到,索引为3的位置的值已经填充为3,即前一个值。
DataFrame的reindex方法
以下是DataFrame的reindex方法的使用,以下代码建立了一个DataFrame,其索引为0、1、2,列分别为A、B、C,值分别为1、2、3:
import pandas as pd df = pd.DataFrame([[1, 2, 3]], index=[0], columns=['A', 'B', 'C']) print(df)
输出:
A B C 0 1 2 3
使用reindex方法,将索引重新设置为0、2、3:
df.reindex([0, 2, 3])
输出:
A B C 0 1.0 2.0 3.0 2 NaN NaN NaN 3 NaN NaN NaN
可以看到,索引重新设置为0、2、3,但是索引为2和3的位置的值都为NaN,为了填充缺失的值,可以设置fill_value参数,令缺失值填充为0:
df.reindex([0, 2, 3], fill_value=0)
输出:
A B C 0 1.0 2.0 3.0 2 0.0 0.0 0.0 3 0.0 0.0 0.0
可以看到,索引为2和3的位置的值都填充为0,还可以设置method参数,令缺失值填充为前一个值或后一个值:
df.reindex([0, 2, 3], method='ffill')
输出:
A B C 0 1.0 2.0 3.0 2 1.0 2.0 3.0 3 1.0 2.0 3.0
可以看到,索引为2和3的位置的值都填充为前一个值1、2、3。
Pandas中的reindex方法可以对Series和DataFrame进行重置索引,它的参