首页 > 解决方案 > pandas ValueError:以 10 为基数的 int() 的无效文字:''

问题描述

我有一个df

inv_id
d5
dd

a123

我喜欢转换inv_id成 int 并检查它的值是否小于 100,

df['inv_id'].str.replace(r'\D+', '').apply(int) < 100

但我得到了

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

我知道空字符串不能转换为int,但我喜欢设置空字符串,因为False无论inv_id最初是空字符串还是str.replace转换为空字符串后。所以结果看起来像,

inv_id    res
d5        True
dd        False
          False
a123      False

标签: pythonpython-3.xpandasdataframe

解决方案


您可能需要使用to_numeric而不是apply(int)..

pd.to_numeric(df.inv_id.str.replace(r'\D+', ''),errors ='coerce')<100

推荐阅读