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

使用pandas读取CSV数据时字符串转数值报错,求解决方案

Pandas读取CSV转换数值列报错解决方法

先修正代码里的低级错误

你代码里把读取的DataFrame赋值给了pdf,但后续调用的是df["Total_Raised"],这会直接触发NameError,先把这行改成f = pdf["Total_Raised"]。

核心问题:字符串格式的金额无法直接转int

从数据库导出的字符串类型数据,哪怕在Excel里设置了数值格式,存成CSV后还是会保留原始字符串格式(比如带$、千分位逗号这类符号),直接用int()转换必然报错。

正确处理步骤

import pandas as pd

# 读取CSV文件
pdf = pd.read_csv('Campaign Feb 2023.csv', encoding="ANSI")

# 1. 清理金额列里的非数字字符(比如$、逗号)
pdf['Total_Raised'] = pdf['Total_Raised'].replace(r'[\$,]', '', regex=True)

# 2. 转换为数值类型,无法转换的内容会转为NaN
pdf['Total_Raised'] = pd.to_numeric(pdf['Total_Raised'], errors='coerce')

# 3. 安全获取并转换为int(先检查是否为空值)
x = int(pdf['Total_Raised'][3]) if pd.notna(pdf['Total_Raised'][3]) else 0

补充说明

  • 如果金额列还有其他干扰字符(比如空格、备注文字),可以修改正则表达式,比如r'[\$, ]'来移除空格。
  • 用pd.to_numeric的errors='coerce'选项能避免个别无效值导致整个转换失败,之后可以用pdf.dropna(subset=['Total_Raised'])删掉空值行。

内容的提问来源于stack exchange,提问作者Kushagra Saxena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:05:09