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

Python如何将整数形式字符串存入CSV,读取时不转为numpy.int64

pandas读取CSV时数值字符串被识别为numpy.int64的解决方案

问题原因

CSV属于纯文本格式,本身不会存储字段的类型信息。pandas读取CSV文件时会默认自动推断每列的数据类型,全由数字组成的字符串会被默认判定为整数类型,因此出现读取后类型变为numpy.int64的情况。

解决方案

方案1:读取时指定dtype参数(最推荐)

直接在调用pd.read_csv时指定目标字段的类型为字符串即可,适合明确知道哪几列需要保留字符串格式的场景:

# 仅指定ID列为字符串类型
df = pd.read_csv('test.csv', dtype={'ID': str})

# 如果需要所有列都读取为字符串,可直接全局设置
df = pd.read_csv('test.csv', dtype=str)

修改后运行你的测试代码,print(df['ID'].iloc[0] == ID)会输出True,type(df['ID'].iloc[0])将返回<class 'str'>,符合预期。

方案2:使用converters参数做字段转换

如果需要在读取时对字段做额外的自定义处理,可以用converters参数指定转换规则:

df = pd.read_csv('test.csv', converters={'ID': lambda x: str(x).strip()})

上述代码除了将ID转成字符串外,还会自动去除首尾的空白字符,适合原始数据存在格式问题的场景。

方案3:写入时强制添加字符串标识(可选)

如果希望其他使用该CSV文件的人不需要额外配置也能正确识别字符串类型,可以在写入时给非数值字段添加双引号包裹:

import csv
df.to_csv('test.csv', index=False, quoting=csv.QUOTE_NONNUMERIC)

该方式写入的CSV中,ID字段会被保存为"1",大部分数据分析工具读取时会自动识别为字符串类型。

内容的提问来源于stack exchange,提问作者Fadi Younes。

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:06:06