Pandas系列str extract没有得到一个digi的字符串

2024-05-16 05:51:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从一列字符串中提取数字。但是str.提取物(\d)不适用于只有数字的字符串。在

df['extract'] = df['original'].str.extract('(\d+)')

请将数据帧视为字典:

^{pr2}$

df是一个有2列的pd数据帧,df['orginal']包含2+、2-、2、3-、3、3+,无分级。在

代码工程生成了新的列df['extract'],对于2-(给出2)、3+(给出3)、NO RATING(给出NaN)这样的值是正确的。但对于像2(给出NaN,但我预期为2)和3(给出NaN,但我预期为3)的值是错误的。在

my result


Tags: 数据字符串代码df字典extract数字工程
2条回答

在使用extract之前,请确保您拥有所有字符串

df['extract'] = df['original'].astype(str).str.extract('(\d+)')

问题是有些值是整数,而有些是字符串。尽管str.提取物未获取错误,如果它是整数,则不会提取正确的值。您可以使用lambda和findall函数来处理这种情况。然后还可以添加一个可选运算符(+),以便在值大于等于9的情况下获取更多的数字。在

df['extract'] = df['original'].map(lambda x: re.findall('(\d+)', str(x))) \
                           .map(lambda i: i[0] if len(i)>0 else None)

结果:

^{pr2}$

相关问题 更多 >