You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换DataFrame类整数字符串列中的文本值及解决报错

解决DataFrame字符串列转整数的问题

问题分析

你需要处理两类字符串内容:一类是完全无数字的文本(如"Ask For Price"),另一类是带单位的数字字符串(如含"Kms"的内容),原代码因正则语法错误和逻辑错误导致报错。

分步解决方案

1. 处理特定无意义文本

先把"Ask For Price"这类无法提取数字的文本替换为缺失值(后续可根据业务需求填充0或删除对应行):

import pandas as pd

car_sales["Price"] = car_sales["Price"].replace("Ask For Price", pd.NA)

2. 提取数字内容

对于包含数字和单位(如"Kms")的字符串,用正则提取所有连续数字:

# 提取字符串中的数字部分,无数字的会返回NaN
car_sales["Price"] = car_sales["Price"].str.extract(r'(\d+)', expand=False)

3. 转换为整数

将提取后的结果转为整数,同时处理缺失值(这里以填充0为例,也可以用dropna()删除缺失行):

car_sales["Price"] = car_sales["Price"].fillna(0).astype(int)

合并简化版代码

如果要一次性处理所有情况:

car_sales["Price"] = car_sales["Price"].replace(["Ask For Price"], pd.NA)
car_sales["Price"] = car_sales["Price"].str.extract(r'(\d+)', expand=False).fillna(0).astype(int)

原代码错误说明

你的正则表达式存在两个关键问题:

  • 语法错误:['Ask For Price',.]内部单引号与外层字符串的单引号冲突,导致正则解析失败
  • 逻辑错误:|.\d*会匹配任意字符加任意数字,最终把有效数字也替换为空,空字符串无法转为整数类型

内容的提问来源于stack exchange,提问作者Adnan Manzoor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 20:43:18