当前位置: 首页> 财经> 股票 > php帝国建站系统_个人网页制作成品 设计_58同城如何发广告_陕西seo主管

php帝国建站系统_个人网页制作成品 设计_58同城如何发广告_陕西seo主管

时间:2025/7/14 3:10:33来源:https://blog.csdn.net/imblackcat/article/details/146082952 浏览次数:0次
php帝国建站系统_个人网页制作成品 设计_58同城如何发广告_陕西seo主管

在 Pandas 中,可以使用 fillna(method='ffill') 方法将 DataFrame 中的 NaN 替换为前一个有效值(即 前向填充)。以下是具体实现方法:


基础实现

import pandas as pd
import numpy as np# 示例 DataFrame
df = pd.DataFrame({"列名1": [1, np.nan, np.nan, 4],"列名2": [np.nan, 2, np.nan, 5]
})# 前向填充所有 NaN
df_filled = df.fillna(method='ffill')  # method='ffill' 表示用前一个有效值填充print("原始数据:\n", df)
print("\n填充后:\n", df_filled)

输出结果

原始数据:列名1  列名2
0   1.0  NaN
1   NaN  2.0
2   NaN  NaN
3   4.0  5.0填充后:列名1  列名2
0   1.0  NaN  # 第一个 NaN 无法填充(前面没有值)
1   1.0  2.0
2   1.0  2.0  # 继承前一个有效值
3   4.0  5.0

进阶用法

1. 限定填充方向(行/列)

默认按列方向填充 (axis=0),也可按行填充 (axis=1):

# 按行前向填充(横向填充)
df_filled_row = df.fillna(method='ffill', axis=1)
2. 结合后向填充

若需要同时填充首部的 NaN,可以组合使用 bfill(后向填充):

# 先前向填充,再后向填充
df_filled = df.fillna(method='ffill').fillna(method='bfill')
3. 限定填充步数

通过 limit 参数限制连续填充的最大次数:

# 每个 NaN 最多被填充一次(仅填充紧跟其后的一个 NaN)
df_limited = df.fillna(method='ffill', limit=1)

完整代码示例

import pandas as pd
import numpy as np# 创建含 NaN 的 DataFrame
data = {"A": [1, np.nan, np.nan, 4, np.nan],"B": [np.nan, 2, np.nan, 5, 6]
}
df = pd.DataFrame(data)# 前向填充所有列
df_filled = df.fillna(method='ffill')# 显示结果
print("原始数据:\n", df)
print("\n前向填充后:\n", df_filled)

输出结果

原始数据:A    B
0  1.0  NaN
1  NaN  2.0
2  NaN  NaN
3  4.0  5.0
4  NaN  6.0前向填充后:A    B
0  1.0  NaN  # B 列第一个 NaN 无法填充
1  1.0  2.0
2  1.0  2.0  # A 和 B 继承前值
3  4.0  5.0
4  4.0  6.0  # A 列继承前值 4

注意事项

  1. 首行 NaN 处理
    如果首行有 NaNffill 无法填充(前面没有数据),需结合 bfill 或手动处理。

  2. 原地修改
    若需直接修改原 DataFrame,使用 inplace=True(不推荐,建议赋值新变量):

    df.fillna(method='ffill', inplace=True)  # 直接修改原数据
    
  3. 性能优化
    对大型数据集,优先使用向量化操作(如 fillna),避免逐行循环。


总结

通过 df.fillna(method='ffill') 可以高效实现 用前一个有效值填充 NaN,适用于时间序列、传感器数据等场景。根据需求可调整 axislimit 等参数灵活控制填充逻辑。

关键字:php帝国建站系统_个人网页制作成品 设计_58同城如何发广告_陕西seo主管

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: