如何使用模块 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

这里我想删除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

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

【问题讨论】:

这个欺骗问题的答案在这里并不完全合适:使用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 从数据框列中删除特殊字符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 pyspark 数据框列中的列表中删除特定字符串

从数据框列中的字符串值中删除字符

从字符串 PySpark 数据框列中删除正则表达式

如何删除数据框列中的空格并向其添加字符串“NA”?

如何从数据框列中删除拖尾字母

如何从连接的数据框列中替换 NaN?