如何使用模块re从数据帧列中删除特殊字符?

2024-04-27 00:46:19 发布

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

嘿,我看到了那个链接,但在那里他们没有使用re模块,这就是我在这里发布的原因。希望你能理解并删除副本。

这是Link。我想使用re模块。

表格:

A    B    C    D
1    Q!   W@   2
2    1$   E%   3
3    S2#  D!   4

这里我想删除columnBC中的特殊字符。我已经使用了.transform(),但是如果可能的话,我想使用re来完成,但是我得到了错误。

输出:

A    B    C    D   E   F
1    Q!   W@   2   Q   W
2    1$   E%   3   1   E
3    S2#  D!   4   S2  D

我的代码:

df['E'] = df['B'].str.translate(None, ",!.; -@!%^&*)(")

只有当我知道什么是特殊的角色时,它才起作用。

但我想用re这是最好的方法。

import re
#re.sub(r'\W+', '', your_string)
df['E'] = re.sub(r'\W+', '', df['B'].str)

这里我有个错误:

TypeError: expected string or buffer

所以我应该如何传递该值以获得正确的输出。


Tags: 模块redfstring链接错误副本link
2条回答

没有lamda的一行是:

df['E'] = df['B'].str.replace('\W', '')

this answer所示,您可以将map()lambda函数一起使用,该函数将组合并返回您喜欢的任何表达式:

df['E'] = df['B'].map(lambda x: re.sub(r'\W+', '', x))

lambda只定义匿名函数。您可以让它们保持匿名,或者像其他任何对象一样将它们分配给引用。my_function = lambda x: x.my_method(3)相当于def my_function(x): return x.my_method(3)

相关问题 更多 >