如何使用模块 re 从数据框列中删除特殊字符? [复制]
Posted
技术标签:
【中文标题】如何使用模块 re 从数据框列中删除特殊字符? [复制]【英文标题】:How to remove special characers from a column of dataframe using module re? [duplicate] 【发布时间】:2016-01-20 08:01:02 【问题描述】:嘿,我看到了那个链接,但他们没有使用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
那么我应该如何传递值以获得正确的输出。
【问题讨论】:
这个欺骗问题的答案在这里并不完全合适:使用str.replace('\W+', '')
。这在引擎盖下使用re.sub
。
你可以使用任何你喜欢的lambda
表达式,比如lambda x: re.sub(r'\W+', '', x)
。
Rahul,如果该副本的答案不足以解决您的问题,请联系我(在此处的评论中包含“@TigerhawkT3”),我会重新打开它。
@TigerhawkT3 我试图使用re
,但我不知道这里的 lamda 用法。这就是我发布它的原因。在您给定的链接中,他们只删除了已知字符。但是你的评论str.replace('\W+', '')
我想要的。如果您将其发布为答案或 lamda 函数,我应该如何使用。将不胜感激。
当然,我会重新打开它并让@ajcr 发布他的str.replace
解决方案。
【参考方案1】:
没有map
的单行是:
df['E'] = df['B'].str.replace('\W', '')
【讨论】:
【参考方案2】:正如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)
。
【讨论】:
感谢您的回复。将来我会尝试 lamda 来查询。以上是关于如何使用模块 re 从数据框列中删除特殊字符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章