嘿,我已经看到了这个链接,但在那里他们没有使用re
模块,这就是我在这里发布的原因。希望您理解并删除副本。
这是Link。我想使用re
模块。
表:
A B C D
1 Q! W@ 2
2 1$ E% 3
3 S2# D! 4
此处我想删除column
B
和C
中的特殊字符。我使用了.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
那么我应该如何传递该值以获得正确的输出。
答案 0 :(得分:6)
没有lamda
的单行内容是:
df['E'] = df['B'].str.replace('\W', '')
答案 1 :(得分:5)
正如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)
。