我正在清理具有以下内容的数据集:
[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
我的目标是删除特殊字符和数字,但是有一个包含字母数字的单词,应该保留。有人可以帮忙吗?
答案 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 (允许字母数字)