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

如何用Python将CSV文件中的列类型转换为数值型?

解决CSV数值列转数值类型失败及PostgreSQL导入问题

先修正你的代码错误

你的代码存在两个核心问题,导致PRICE列类型始终为object:

  • pd.to_numeric("PRICE", errors='coerce')传入的是列名字符串,而非DataFrame的目标列,正确参数应为df['PRICE']
  • 你将转换结果赋值给了df[14],这是创建新列而非覆盖原PRICE列

修正后的代码:

import pandas as pd

# 读取CSV时关闭分块类型推断,消除混合类型警告
df = pd.read_csv(r"C:\My Files\data1.csv", low_memory=False)
print(df.dtypes)

# 转换PRICE列为数值类型并覆盖原列
df['PRICE'] = pd.to_numeric(df['PRICE'], errors='coerce')
print(df.dtypes)

处理DtypeWarning警告

该警告提示1、2、7列存在混合类型(同一列同时包含字符串、数值等),有两种处理方式:

  • 方式1:添加low_memory=False参数(如上代码),关闭Pandas分块读取时的类型推断,直接读取全量数据进行类型判断
  • 方式2:读取时明确指定这些列的类型,例如如果这些列应存为字符串:
df = pd.read_csv(r"C:\My Files\data1.csv", dtype={1: str, 2: str, 7: str})

验证转换结果并清理异常值

  • 用df['PRICE'].isna().sum()统计转换失败的数量(errors='coerce'会将无法转换的值转为NaN)
  • 如果不需要自动转为NaN,可将errors='coerce'改为errors='raise',触发错误定位具体异常值,手动清理后再转换

导出清理后的CSV用于PostgreSQL导入

转换完成后导出新CSV,确保数值列格式正确:

df.to_csv(r"C:\My Files\data1_cleaned.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:12