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

如何在Pandas中批量将多列从float类型转为整数和小数类型?

解决方案

你的问题出在最后一步直接把整个DataFrame强制转成了int类型,不管列里有没有有效小数,都会被截断转成整数。要实现自动判断列类型,不用指定列名,可以按下面的方式处理:

  1. 先把所有列统一转为数值类型,处理无法转换的值并填充空值(和你原来的逻辑保持一致)
  2. 遍历每一列,判断该列的所有值是否都是整数形式的浮点数(比如3.0这种),如果是就转成整数类型,否则保留小数类型

完整代码如下:

import pandas as pd

# 读取数据
df = pd.read_csv(filename, low_memory=False)
# 将所有列转为数值类型,无法转换的设为NaN后填充0
df = df.apply(pd.to_numeric, errors='coerce').fillna(0)

# 自动判断每列的目标类型
for col in df.columns:
    # 检查列中所有值的小数部分是否都是0
    if (df[col] % 1 == 0).all():
        df[col] = df[col].astype(int)
    # 非整数列保持float类型不变

# 查看结果
print(df.head(165))

说明:

  • df.apply(pd.to_numeric, errors='coerce'):对每一列单独做数值转换,比直接用pd.to_numeric(df)更灵活,能处理列类型不一致的情况
  • (df[col] % 1 == 0).all():判断该列所有值除以1的余数是否为0,也就是所有值都是整数形式的浮点数,满足条件就转成int类型
  • 全程不需要手动指定列名,会自动适配所有列的实际数据情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:30:57