当前位置: 首页 > news >正文

【Pandas】pandas DataFrame replace

Pandas2.2 DataFrame

Missing data handling

方法描述
DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值(NaN)
DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充(即“下一个有效观测值”)来填补缺失值(NaN)**的方法
DataFrame.bfill(*[, axis, inplace, limit, …])用于**使用后向填充(即“下一个有效观测值”)来填补缺失值(NaN)**的方法
DataFrame.dropna(*[, axis, how, thresh, …])用于删除包含缺失值(NaN)的行或列的方法
DataFrame.ffill(*[, axis, inplace, limit, …])用于**使用前向填充(即“前一个有效观测值”)来填补缺失值(NaN)**的方法
DataFrame.interpolate([method, axis, limit, …])用于对缺失值(NaN)进行插值填充的方法
DataFrame.isna()用于检测 DataFrame 中缺失值(NaN)的位置的方法
DataFrame.isnull()用于检测 DataFrame 中缺失值(NaN)的位置的方法
DataFrame.notna()用于检测 DataFrame 中非缺失值(即不是 NaN)的位置的方法
DataFrame.notnull()用于检测 DataFrame 中非缺失值(即不是 NaN)的位置的方法
DataFrame.pad(*[, axis, inplace, limit, …])用于**使用前向填充(即“前一个有效观测值”)来填补缺失值(NaN)**的方法
DataFrame.replace([to_replace, value, …])用于替换 DataFrame 中特定值的方法

pandas.DataFrame.replace()

pandas.DataFrame.replace() 是一个用于替换 DataFrame 中特定值的方法。它可以用于替换单一值、多个值、使用正则表达式匹配替换,甚至可以结合插值方法进行填充。


📌 方法签名
DataFrame.replace(to_replace=None, value=<no_default>, *, inplace=False, limit=None, regex=False, method=<no_default>)

🔧 参数说明
参数类型说明
to_replacescalar、list、dict、regex等要被替换的值或模式;支持多种类型:
- 标量:如 np.nan0
- 列表:如 [1, 2]
- 字典:指定每列的替换规则
- 正则表达式(配合 regex=True
valuescalar、list、dict 或 <no_default>替换的目标值;如果未提供且 to_replace 是 dict,则忽略此参数
inplacebool,默认 False是否在原对象上修改
limitint,可选插值时最多连续替换的数量(仅当 method 不为 None 时有效)
regexbool,默认 False是否将 to_replace 视为正则表达式处理
method{'pad', 'ffill', 'bfill', None}插值方式,仅在 to_replaceNone 时生效

✅ 返回值
  • 返回一个新的 DataFrame,其中满足条件的值被替换;
  • 如果 inplace=True,则返回 None,原始数据被修改。

🧪 示例代码及结果
示例 1:替换标量值(如 NaN)
import pandas as pd
import numpy as npdf = pd.DataFrame({'A': [1, 2, np.nan, 4],'B': [5, np.nan, np.nan, 8]
})print("Original DataFrame:")
print(df)# 将 NaN 替换为 0
replaced_df = df.replace(np.nan, 0)
print("\nAfter replace(np.nan, 0):")
print(replaced_df)
输出结果:
Original DataFrame:A    B
0  1.0  5.0
1  2.0  NaN
2  NaN  NaN
3  4.0  8.0After replace(np.nan, 0):A  B
0  1  5
1  2  0
2  0  0
3  4  8

示例 2:替换多个值(列表形式)
# 将 1 和 3 替换为 0
df_multi = pd.DataFrame({'X': [1, 2, 3], 'Y': [3, 4, 5]})
replaced_multi = df_multi.replace([1, 3], 0)print("Original Multi-value DataFrame:")
print(df_multi)print("\nAfter replace([1, 3], 0):")
print(replaced_multi)
输出结果:
Original Multi-value DataFrame:X  Y
0  1  3
1  2  4
2  3  5After replace([1, 3], 0):X  Y
0  0  0
1  2  4
2  0  5

示例 3:使用字典分别替换不同列
# 每列单独替换
replace_dict = {'X': 1, 'Y': 3}
replaced_dict = df_multi.replace(replace_dict, 0)print("\nAfter replace(dict):")
print(replaced_dict)
输出结果:
After replace(dict):X  Y
0  0  0
1  2  4
2  3  5

示例 4:使用正则表达式替换字符串
df_str = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie'],'Status': ['active', 'inactive', 'active']
})# 将 'active' 替换为 'enabled'
replaced_regex = df_str.replace('active', 'enabled', regex=True)print("Original String DataFrame:")
print(df_str)print("\nAfter replace with regex:")
print(replaced_regex)
输出结果:
Original String DataFrame:Name    Status
0    Alice    active
1      Bob  inactive
2  Charlie    activeAfter replace with regex:Name     Status
0    Alice    enabled
1      Bob  inactive
2  Charlie    enabled

示例 5:使用 method='ffill' 进行前向填充
# 使用 ffill 填充 NaN
replaced_ffill = df.replace(np.nan, method='ffill')
print("\nAfter replace with method='ffill':")
print(replaced_ffill)
输出结果:
After replace with method='ffill':A    B
0  1.0  5.0
1  2.0  5.0
2  2.0  5.0
3  4.0  8.0

示例 6:限制替换数量(limit=1
# 限制每次最多替换 1 个 NaN
limited_replace = df.replace(np.nan, method='ffill', limit=1)
print("\nAfter replace with limit=1:")
print(limited_replace)
输出结果:
After replace with limit=1:A    B
0  1.0  5.0
1  2.0  5.0
2  NaN  NaN
3  4.0  8.0

示例 7:原地修改(inplace=True
# 原地替换
df.replace(np.nan, 0, inplace=True)
print("\nIn-place replace (modified original):")
print(df)
输出结果(基于示例 1 的数据):
In-place replace (modified original):A  B
0  1  5
1  2  0
2  0  0
3  4  8

🧠 应用场景
场景说明
缺失值替换如替换 NaNNone
异常值修正如将超出范围的数值替换为合理值
文本清洗如统一状态字段名称(如 'active' → 'enabled'
多列定制化替换使用字典对不同列设置不同的替换规则
链式调用中清理数据df.replace(...).fillna(0)

⚠️ 注意事项
  • to_replace 可以是标量、列表、字典或正则表达式;
  • 若使用 regex=True,请确保 to_replace 是字符串格式;
  • method='ffill' / 'bfill' 适用于时间序列或趋势数据;
  • limit 控制连续替换的最大数量;
  • 推荐先查看数据分布再决定如何替换;
  • 仅对 NaN 生效(除非你显式传入其他值);
  • replace() 不会自动排序索引,建议先排序以获得预期效果。

✅ 总结对比
方法是否推荐使用说明
replace(value, new_value)✅ 推荐快速替换特定值
replace([v1, v2], new_value)✅ 推荐批量替换多个值
replace({col: val}, ...)✅ 推荐多列定制化替换
replace(..., regex=True)✅ 推荐支持正则表达式
replace(method='ffill')✅ 推荐结合插值法替换缺失值

你可以根据具体需求选择最适合的参数组合来清理和转换数据。

相关文章:

  • 【网关】互联网公司的接入网关和业务网关怎么设计
  • 多模态大语言模型arxiv论文略读(121)
  • 零基础实战:用 Docker 和 vLLM 本地部署 BGE-M3 文本嵌入模型
  • NAS 年中成果汇报:从入门到高阶的影视/音乐/小说/资源下载 等好玩Docker 全集合
  • 通过XML方式在Word段落前添加空白段落
  • Linux搭建爬虫ip与私有IP池教程
  • Power BI Streaming dataset - 模拟监测水库的水位情况
  • WPF加载文本文件时如何设置WebBrowser的字体
  • dsp28335
  • Prompt从入门到抄作业
  • 如何轻松实现多源混算报表
  • Linux运维-ansible-python开发-获取inventroy信息
  • CodeRider插件配置指南二
  • CVPR 2025现场直击
  • 【Docker基础】Docker核心概念:命名空间(Namespace)详解
  • Vue中v-if条件渲染的常见陷阱:以金额显示为例
  • 工业协议转换新标杆:三格电子 Profinet IO-Link 主站网关赋能智能工厂
  • 【解决方案】Kali 2022.3修复仓库密钥无交互一键安装docker,docker compose
  • iOS Alamofire库的使用
  • Rethinking Coarse-to-Fine Approach in Single Image Deblurring论文阅读
  • 广东网站制作多少钱/淘宝搜索关键词排名查询工具
  • 做电子外贸网站建设/2022网站seo
  • 深圳商城网站建设/搜索引擎优化免费
  • 中国建设银行密码重置网站/优秀软文范例
  • 如何用github做网站/黑龙江网络推广好做吗
  • 网站建设 济南/网站权重怎么看