我试图从列中删除除alpha和空格以外的所有字符,但当我使用代码执行相同操作时,它将输出为'nan'
,而不是NaN
(空值)
输入数据:
col1
ABC ad
YQW \2
AQ4 GH
@34
#45
NaN
预期产出:
col1
ABC ad
YQW
AQ GH
NaN
NaN
NaN
我一直在使用的代码:
df['col1'] = df['col1'].astype(str).str.extract(r'([A-Za-z]+(?: [A-Za-z]+)*)')
稍后,我将使用此列检查NaN
的条件,但它没有给出,因为在执行上述脚本后,它将NaN
值更改为'nan'
注意:如果不通过.astype(str)
转换为字符串,我的数据将
AttributeError: Can only use .str accessor with string values!
您可以通过以下步骤执行此操作:
NaN
值(我们也可以在删除字符后得到空字符串,然后将其转换回NaN
)李>NaN
为^{(注意:前两个步骤是针对OP获取
AttributeError: Can only use .str accessor with string values!
的问题的特殊处理,尽管我专门添加整数和浮点(不是字符串中的整数和浮点,而是实数值)的测试在没有前两个步骤的情况下也没有问题。可能是其他一些特殊数据类型!)没有相同问题的其他用户只能使用从str.replace()
开始的最后两个步骤结果:
注意,我们不能在这里使用
.extract()
,而必须使用.replace()
来去除不需要的字符。像'ab c1d2@ef4'这样的字符串怎么样?使用什么正则表达式模式只提取数字和特殊字符后面的字母和空格?别忘了,我们必须考虑一般情况,而不仅仅是这里的样本数据。我们能在这里引用所有可能的正则表达式模式来处理无限多的alpha、空格、数字和特殊字符模式的组合吗另一种方法是提取字母数字,但排除数字。请参阅下面的代码
相关问题 更多 >
编程相关推荐