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

Pandas:将多类型数据列转为整数并忽略转换错误

解决DataFrame列中混合类型数据转整数字符串的问题

问题分析

df['code'].astype(int, errors='ignore') 无法生效的核心原因:

  • 对于字符串类型的指数格式(如'1.17E+04'),astype(int)无法直接解析,因为它本质是字符串而非数值类型;
  • errors='ignore'仅在转换失败时返回原数据,但无法主动处理「字符串转数值再转整数」的完整流程。

解决方案

使用自定义函数结合apply方法,逐个处理列中的每一个元素:

  • 对浮点数、可转数值的指数格式字符串,先转成数值再转整数,最终转为字符串;
  • 对无法转数值的字符串(如'24477G'),直接保留原内容。

代码实现

  1. 构造示例DataFrame(模拟你的数据场景):
import pandas as pd

df = pd.DataFrame({
    'code': [1170E1, '1.17E+04', 11700.0, '24477G', 124601, '247602']
})
  1. 定义转换函数:
def convert_to_int_str(x):
    try:
        # 先转为float,兼容浮点数、指数格式字符串
        num = float(x)
        # 转整数后转为字符串
        return str(int(num))
    except (ValueError, TypeError):
        # 转换失败(如含非数字字符),返回原字符串
        return str(x)
  1. 应用函数到目标列:
df['code'] = df['code'].apply(convert_to_int_str)

执行结果

处理后df['code']的输出与你期望一致:

0    11700
1    11700
2    11700
3    24477G
4    124601
5    247602
Name: code, dtype: object

补充说明

  • 如果数据中存在带小数的数值(如123.45),int(float(x))会自动截断小数部分,若需四舍五入可替换为str(round(num));
  • 函数通过try-except捕获转换异常,确保所有无法转换的内容都能原样保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:06:26