替换熊猫列特殊字符

时间:2021-07-15 14:48:43

标签: pandas replace

我有一个带有特殊字符的 Pandas colum,例如 {{,}},[,],,。 (逗号是分隔符)。

我尝试使用以下方法用下划线 ('_') 替换特殊字符,但它不起作用。你能告诉我我做错了什么吗?谢谢。

import pandas as pd
data = [["facebook_{{campaign.name}}"], ["google_[email]"]]
 
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Marketing'])

print(df)

df['Marketing'].str.replace(r"\(|\)|\{|\}|\[|\]|\|", "_")
print(df)

输出:

                    Marketing
0  facebook_{{campaign.name}}
1              google_[email]
                    Marketing
0  facebook_{{campaign.name}}
1              google_[email]

1 个答案:

答案 0 :(得分:0)

从此DataFrame

>>> import pandas as pd

>>> data = [["facebook_{{campaign.name}}"], ["google_[email]"]]
>>> df = pd.DataFrame(data, columns = ['Marketing'])
>>> df
    Marketing
0   facebook_{{campaign.name}}
1   google_[email]

我们可以像您建议的那样使用 replaceregex,包括 |,它是一个 or 运算符,除了最后的 \| 是符号|
然后我们对双精度 _ 进行去重并删除最后剩余的 _ 以获得预期结果:

>>> df['Marketing'] = df['Marketing'].str.replace(r"\(+|\)+|\{+|\}+|\[+|\]+|\|+|\_+|\.+", "_", regex=True).str.replace(r"_+", "_", regex=True).str.replace(r"_$", "", regex=True)
>>> df
0    facebook_campaign_name
1              google_email
Name: Marketing, dtype: object