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

如何将DataFrame列中混合格式值转换为整数?

混合类型列转整数的解决方法

你的Slot列同时包含字符串格式数字和整数,直接用astype('Int64')会因为类型不兼容报错,推荐两种可行方案:

方案一:用pd.to_numeric统一转换

这是最简便的方法,pd.to_numeric会自动识别字符串形式的数字并转换,无法转换的内容会被设为NaN,之后再转成支持空值的Int64类型:

import pandas as pd

# 第一步:将所有元素转为数值类型,无效值设为NaN
df['Slot'] = pd.to_numeric(df['Slot'], errors='coerce')
# 第二步:转为支持空值的Int64整数类型
df['Slot'] = df['Slot'].astype('Int64')

方案二:自定义转换函数(更灵活)

如果需要处理特殊格式(比如带空格的字符串数字),可以用apply配合自定义函数逐个转换:

def safe_convert(x):
    try:
        # 先转为字符串并去除首尾空格,再转整数
        return int(str(x).strip())
    except (ValueError, TypeError):
        # 转换失败返回pd.NA(兼容Int64类型)
        return pd.NA

df['Slot'] = df['Slot'].apply(safe_convert).astype('Int64')

补充说明

直接astype('Int64')报错的原因:object类型列中同时存在字符串和整数实例,Pandas无法安全地将两种完全不同的类型直接映射到整数类型,必须先将所有元素统一为数值类或者处理为可转换的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:32:05