熊猫迭代抛出行以查看值是否为字母数字

时间:2018-09-11 15:09:09

标签: python string pandas

所以我有一个df,其中的列具有各种字符串值

col1

Hi
-Hi
+hi
=Hi

我想将此列中的所有非字母数字值都删除:

col1

Hi
Hi
hi
Hi

我知道我可以用那些非alpha字符替换str,但是为了以后验证脚本,我想使用isalpha()之类的东西。将来可能会有不同的非字母字符。

2 个答案:

答案 0 :(得分:1)

您可以使用列表理解:

df['col1'] = [''.join([i for i in x if i.isalpha()]) for x in df['col1']]

print(df)

  col1
0   Hi
1   Hi
2   hi
3   Hi

如果您有NaNfloat值,请先将其转换为空字符串,然后首先将其删除:

df.loc[pd.to_numeric(df['col1'], errors='coerce').notnull(), 'col1'] = ''

答案 1 :(得分:0)

您还可以使用正则表达式:

df['col1'].str.findall(r'[a-zA-Z0-9]+').apply(lambda x: ''.join(x))

输出:

0  Hi
1  Hi
2  hi
3  Hi