Skip to main content
 首页 » 编程设计

python之Pandas:在将对象转换为 int 时删除列中的无效文字

2025年05月04日22mq0036

我正在尝试将邮政编码为“object”类型的列转换为“int”

df['ZIP'] = df['ZIP'].astype(str).astype(int)

我的数据超过 100000 条记录,它不断抛出具有不同文字的消息,这些文字在该列中无效。我理解数据类型不匹配,转换失败。

ValueError: invalid literal for int() with base 10: '     ' 

为了更正上述错误,我用 nan 替换了“空行”并使用以下代码删除了它们:

   df['ZIP'] = df['ZIP'].replace('', np.nan) 
   df['ZIP'] = df.dropna(subset=['ZIP']) 

之后我再次收到以下错误。

  ValueError: invalid literal for int() with base 10: 'SAM' 

有没有一种无需所有这些步骤即可删除所有无效文字的有效方法?

请您参考如下方法:

首先,使用参数errors='coerce' 转换为数字,这样不能转换的将是NaN。然后,删除它们并将系列转换为整数。

df['ZIP'] = pd.to_numeric(df['ZIP'], errors='coerce') 
df = df.dropna(subset=['ZIP']) 
df['ZIP'] = df['ZIP'].astype('int')