在保留字母数字词的同时删除特殊字符

时间:2019-07-12 05:43:16

标签: regex python-3.x pandas

我正在清理具有以下内容的数据集:

[IN]

my_Series = pd.Series(["-","ASD", "711-AUG-M4G","Air G2G", "Karsh"])
my_Series.str.replace("[^a-zA-Z]+", " ")

[OUT]

0            
1         ASD
2     AUG M G
3     Air G G
4       Karsh

[IDEAL OUT]

0            
1         ASD
2     AUG M4G
3     Air G2G
4       Karsh

我的目标是删除特殊字符和数字,但是有一个包含字母数字的单词,应该保留。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

尝试使用idx:Session:Node:Server8以获得理想的输出。

apply

输出:

>>> my_Series = pd.Series(["-","ASD", "711-AUG-M4G","Air G2G", "Karsh"])

说明:

我已将>>> my_Series.apply(lambda x: " ".join(['' if word.isdigit() else word for word in x.replace('-', ' ').split()])) 0 1 ASD 2 AUG M4G 3 Air G2G 4 Karsh dtype: object 替换为-,并在space上分割了字符串。然后检查单词是否为数字。

如果是数字,则用空字符串替换,否则用实际单词替换。

最后我们加入了名单。

编辑1:

regex解决方案:-

spaces

说明:

使用lookaround

>>> my_Series.str.replace("((\d+)(?=.*\d))|([^a-zA-Z0-9 ])", " ")
0             
1          ASD
2      AUG M4G
3      Air G2G
4        Karsh
dtype: object

(如果后面跟有其他任何数字,则为最后一个数字) OR (允许字母数字)