如何对Pandas DataFrame中某一列的指定片段进行插值
实现思路与代码示例
核心思路
你需要对指定行范围(第2到第4行)内的待插值行做线性插值,Pandas的interpolate()方法可直接实现该需求,关键是精准锁定目标行范围并指定插值方法。
具体步骤与代码
- 先构造出修改后的DataFrame(对应你提供的第二张图):
import pandas as pd import numpy as np # 构造修改后的DataFrame df = pd.DataFrame({ 'Time': [0, 1, 2, 3], 'A': [1, 5, np.nan, 11], 'B': [2, 8, np.nan, 14], 'C': [3, 11, np.nan, 17] })
- 对第2到第4行(Pandas默认0索引,对应索引1到3的行)执行插值:
# 仅在索引1到3的行范围内,按列方向做线性插值 df.loc[1:3] = df.loc[1:3].interpolate(method='linear', axis=0)
- 执行后得到的结果与目标一致:
Time A B C 0 0 1.0 2.0 3.0 1 1 5.0 8.0 11.0 2 2 8.0 11.0 14.0 3 3 11.0 14.0 17.0
关键说明
interpolate(method='linear'):默认线性插值,会根据上下行数值自动计算中间行的插值结果,完全匹配你的需求。loc[1:3]:精准锁定需要插值的行范围,避免改动其他行的数据。- 若你的DataFrame使用非连续数字索引,也可通过行标签指定范围,比如
df.loc['行标签2':'行标签4']。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

