Python Pandas中Series与DataFrame的reindex方法详解

慢慢来
慢慢来
发布时间:2026-10-13 | 5人浏览过
原创

本文详解Python Pandas库中reindex方法的使用。通过Series和DataFrame示例,展示如何调整索引顺序、处理缺失值及列名变更。重点解析method参数中ffill(前向填充)与bfill(后向填充)的区别,以及如何结合axis参数对行列进行插值或填充操作,帮助开发者高效管理数据索引结构。

reindex方法的主要作用并非直接修改Pandas对象的底层索引数据,而是调整索引的排列顺序。若指定的新索引在原对象中不存在,系统会自动使用None(在数值型数据中通常表现为NaN)来填充对应位置。需要注意的是,reindex操作不会就地修改原始数组,若需保留结果,必须通过赋值语句将返回值重新赋给变量。

Series.reindex()方法用于对一维序列进行索引重置。

import pandas as pd
import numpy as np
obj = pd.Series(range(4), index=['d', 'b', 'a', 'c'])
print obj
d 0
b 1
a 2
c 3
dtype: int64 
print obj.reindex(['a', 'b', 'c', 'd', 'e'])
1
a 2.0
b 1.0
c 3.0
d 0.0
e NaN
dtype: float64

当新索引中包含原Series中不存在的标签(例如示例中的'e')时,该位置的值将被赋为NaN。

可以通过method参数指定插值或填充策略,以处理新增索引产生的缺失值。

obj1=pd.Series(range(3), index=['a', 'c', 'e'])
print obj1.reindex(['a', 'b', 'c', 'd', 'e'],method='pad')
a 0
b 0
c 1
d 1
e 2
dtype: int64

ffill或pad:表示前向填充(Forward Fill),即用前一个有效值填充当前缺失值。

bfill或backfill:表示后向填充(Backward Fill),即用后一个有效值填充当前缺失值。

DataFrame.reindex()方法用于对二维数据框进行索引重置。

DataFrame的reindex()可以同时改变行索引、列索引或两者。当仅传入一个序列参数时,默认对行索引进行重新索引。虽然可以同时对行和列进行重排,但method参数指定的插值操作仅作用于行方向(即坐标轴0)。

frame = pd.DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'], columns=['c1', 'c2', 'c3'])
print frame
 c1 c2 c3
a 0 1 2
c 3 4 5
d 6 7 8
states = ['c1', 'b2', 'c3']
frame.reindex(columns=states)

c1 b2 c3
a 0 NaN 2
c 3 NaN 5
d 6 NaN 8

如果新指定的列名在原DataFrame中不存在,这些新增列的值将被赋为NaN。

frame_na=frame.reindex(index=['a', 'b', 'c', 'd'], method='ffill', columns=states)
print frame_na
 c1 b2 c3
a 0 NaN 2
b 0 NaN 2
c 3 NaN 5
d 6 NaN 8

虽然插值仅在行方向(坐标轴0)通过method参数生效,但我们可以在此基础上,进一步对产生的NaN值进行填充处理。

frame_na.fillna(method='ffill',axis=1)

c1 b2 c3
a 0.0 0.0 2.0
b 0.0 0.0 2.0
c 3.0 3.0 5.0
d 6.0 6.0 8.0

以上关于Python Pandas中Series和DataFrame使用reindex方法进行索引重置的详解到此结束。希望本文内容能为您提供参考,欢迎继续支持本站获取更多技术分享。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表