仅保留Pandas数据帧列中的某些字符

时间:2017-05-31 13:28:04

标签: python pandas

我在数据框中有一个列,其中包含许多特殊字符(主要是法语口音)。我需要将其与另一个仅保留某些字符的源(AZ 0-9' - space )合并,然后删除其他源,因此需要以相同的方式清理文本才能使其工作。

我认为正则表达式是关键所以我尝试了以下两个选项。

df['city'] = re.sub("[^ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'-. ]", "", df['city'] )    
df['city'] = df['city'] .apply(lambda x: re.sub("[^ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'-. ]","",x))

第一个选项给我TypeError:期望的字符串或缓冲区,而第二个选项给出TypeError:期望的字符串或缓冲区。

当我只对一个字符串进行测试时,代码可以工作,所以我感觉某处有点故障。我不能把手放在它上面。

2 个答案:

答案 0 :(得分:0)

df['city'].str.replace("[^ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'-. ]", "")

可能就是你要找的东西。

答案 1 :(得分:0)

我认为第二个例子可行。也许city列中没有“无”?请尝试如下。

REGEX_STR = "[^ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'-. ]"
df['city'] = df['city'].apply(lambda x: re.sub("", x) if x else '')