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

Pandas DataFrame列大数值正则验证不生效问题求助

问题根因

校验失败是Pandas读取CSV时的自动类型推断导致的:

  • 样例第8行的11119009876541231111是20位大整数,已经超过float64类型的精度上限(2^53≈9e15),Pandas默认会将其推断为float64类型存储,出现精度损失
  • 调用apply(str)转换时,该数值会变成科学计数法格式(如1.1119009876541231e+19),和正则规则不匹配,因此被误判为非法值
解决方案

最直接的方案是读取CSV时强制按字符串类型加载所有列,完全保留原始文本内容,避免自动类型转换带来的数值变形:

import pandas as pd
NumberValidationRegexnegative = r"^-?[0-9]{1,20}(?:\.[0-9]{1,3})?$"
# 关键修改:添加dtype=str参数,所有列以字符串格式读取
df_CPCodeDF=pd.read_csv("D:\\FTP\LocalUser\\NCCLCOLL\\COLLATERALUPLOAD\\upld\\SplitFiles\\AACCR6675H_22102021_07_1 - Copy.csv", dtype=str)
rslt_df2=df_CPCodeDF[df_CPCodeDF.iloc[:, 0].notna()]
# 直接对字符串列做正则匹配即可,不需要再转str
rslt_df1=rslt_df2[~rslt_df2.iloc[:,0].str.contains(NumberValidationRegexnegative, regex=True)].index   
print("rslt_df1",rslt_df1)   

修改后运行即可得到预期的空索引输出。

补充说明

如果后续需要用到数值计算,可以在校验通过后再单独对指定列做类型转换,避免提前转换引入精度问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:18:00