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

使用pd.read_csv时如何去除多余.0并转为int类型?

问题1:读取含.0的CSV数据并转为int类型

针对示例CSV数据:

1000.0, 2000.0, 3000.0

直接用pd.read_csv(..., dtype=int)会报错,因为数据是带小数位的字符串格式。推荐两种优雅的处理方式:

方式1:读取为float后直接转int

如果数据确定都是整数的浮点表示(无非.0的小数),可以先以float读取,再转为int:

import pandas as pd
df = pd.read_csv("your_file.csv", dtype=float).astype(int)

这种方式简洁,pandas会自动去除.0,直接得到int类型数值。

方式2:使用converters参数自定义解析

如果需要在读取阶段完成处理,可通过converters指定列的解析逻辑:

df = pd.read_csv(
    "your_file.csv",
    converters={col: lambda x: int(float(x)) for col in ["col1", "col2", "col3"]}
)

若不确定列名,可按索引处理:

df = pd.read_csv(
    "your_file.csv",
    header=None,
    converters={i: lambda x: int(float(x)) for i in range(3)}
)

问题2:解析带千分位的数值字符串1,000时报错

执行pd.read_csv(~, dtype='int', thousands=',')出现unable to parse string "1,000"错误,原因是指定dtype='int'时,pandas会跳过thousands参数的预处理,直接尝试将未处理逗号的字符串转为int。

解决方法:

方式1:不指定dtype,让pandas自动识别

去掉dtype='int',仅保留thousands=',',pandas会自动解析千分位并识别数值类型,之后再转为int即可:

df = pd.read_csv("your_file.csv", thousands=',')
df = df.astype(int)

方式2:使用converters自定义处理

编写解析函数,先去除千分位逗号再转int:

def parse_thousand(x):
    return int(x.replace(',', ''))

df = pd.read_csv(
    "your_file.csv",
    converters={"target_col": parse_thousand}
)

方式3:使用Int64可空整数类型

若数据存在缺失值,推荐用可空整数类型配合thousands=',',既支持千分位解析,又能保留int类型:

df = pd.read_csv("your_file.csv", dtype='Int64', thousands=',')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:30:37