如何将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
相关产品推荐
相关产品推荐

