使用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
相关产品推荐
相关产品推荐

