首页 > 解决方案 > 替换熊猫列特殊字符

问题描述

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

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

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]

标签: pandasreplace

解决方案


从此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]

我们可以replace按照您的建议使用 a regex,包括|which 是一个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

推荐阅读