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

如何定位DataFrame中int类型转换失败的位置?

定位DataFrame中无法转换为整数的无效字符串位置

方法一:利用pd.to_numeric标记无效值

通过将无法转换为数字的项转为NaN,再筛选出这些NaN对应的原始内容和索引:

# 拆分并展开字符串,保留原DataFrame的行索引
temp_raw = thedataframe['next'].str.split(';').explode()
# 尝试转换,无效项转为NaN
temp_numeric = pd.to_numeric(temp_raw, errors='coerce')
# 筛选出所有无法转换的原始字符串及其索引
invalid_items = temp_raw[temp_numeric.isna()]
print("无效内容及对应原行索引:")
print(invalid_items)

直接查看输出就能定位到导致失败的字符串(比如纯空格' '),以及它们来自原DataFrame的哪一行。

方法二:正则匹配筛选非数字项

如果目标是正整数,用正则表达式直接匹配不符合纯数字格式的项:

temp_raw = thedataframe['next'].str.split(';').explode()
# 匹配非纯数字的项(若包含负整数,正则改为r'^-?\d+$')
invalid_items = temp_raw[~temp_raw.str.match(r'^\d+$', na=False)]
print("无效内容:")
print(invalid_items)
print("对应原行索引:")
print(invalid_items.index.unique())

方法三:直接排查原列中的格式问题

错误提示的' '大概率是原列中存在带空格的分隔项(比如"123 ; 456"),可以直接查找这类行:

# 查找包含分号前后带空格的行
problem_rows = thedataframe[thedataframe['next'].str.contains(r';\s|\s;', na=False)]
print("原列中格式有问题的行:")
print(problem_rows)

补充说明

你之前用np.where(pd.isnull(...))找不到问题,是因为出错的是纯空格字符串' ',它不属于空值(null),pd.isnull无法识别这类无效值,必须通过转换尝试或正则匹配来定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:55:21