如果输入已经是熊猫系列,您可以使用pandas.to_numeric(your_series_data, errors='coerce').fillna(-9999).astype(int)
import pandas as pd
from io import StringIO
# some example data
data=StringIO('''Values
,8673331000
,8673331000
,8673331000
,18673331000
,8673331000.0
,NaN
,867B331000
''')
#read data to csv
df = pd.read_csv(data, sep=",")
# your data may already be a pandas series, which below is df.iloc[:,0]
pd.to_numeric(df.iloc[:,0],errors='coerce').fillna(-9999).astype(int)
NaN 8673331000
NaN 8673331000
NaN 8673331000
NaN 18673331000
NaN 8673331000
NaN -9999
NaN -9999
Name: Values, dtype: int64
您可以直接使用该系列的值,而无需使用 try/except 将它们强制为整数。
整数在 pandas 中不能表示为 NaN,因此在示例中将它们替换为 -9999。当您从系列中提取值时,如果它匹配 -9999,您可以将其设置为 None 或您的代码应该具有的缺失值的任何值。
如果您的输入值是字符串,它们可能会被强制转换为 NaN 而不是整数,例如
data=StringIO('''Values
,8673331000
,"8673331000"
,\'8673331000\'
,18673331000
,8673331000.0
,NaN
,867B331000
''')
df = pd.read_csv(data, sep=",")
使用时,第三个值将最终为 NaNpd.to_numeric(df.iloc[:,0], errors='coerce').fillna(-9999).astype(int)
在这种情况下,我建议从您的输入数据中删除所有 " 或 '
希望有帮助!