gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:51 24 4
gpt4 key购买 nike

我正在尝试将邮政编码为“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')

关于python - Pandas:在将对象转换为 int 时删除列中的无效文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48330303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com