我真的很努力地在Pandas数据框列内进行简单的字符串查找和替换。
作为一个简单的示例,我在列值中找到“(C)”,我想用“”代替。
这是一些非常简单的代码,我无法使用pd.str.replace()来工作,根据这篇文章的第一个答案(Python Pandas: How to replace a characters in a column of a dataframe?),我认为该代码应该有效(但请猜测空格和方括号可能会使您感到困惑?)。我已经尝试过一些正则表达式,但是显然必须做错了。
data = {'id': [1, 2, 3, 4], 'name': ['name1 (C)', 'name2 (B)', 'name3', 'name4']}
df_data = pd.DataFrame.from_dict(data)
df_data['name'] = df_data['name'].str.replace(' (C)', '')
print(df_data)
df_data['name'].replace({' (C)': ''}, inplace=True, regex=True)
print(df_data)
df_data['name'].replace({'( (C))': ''}, inplace=True, regex=True)
print(df_data)
得出的结果:
id name
0 1 name1 (C)
1 2 name2 (B)
2 3 name3
3 4 name4
id name
0 1 name1 (C)
1 2 name2 (B)
2 3 name3
3 4 name4
id name
0 1 name1 (C)
1 2 name2 (B)
2 3 name3
3 4 name4
然而,真正令人困惑的是,如果我仅将其运行到一个纯字符串变量中,那么使用replace函数就可以完美地工作一切。
mystr = "name (C)"
mystr.replace(" (C)", "")
Out[23]: 'name'
任何帮助将不胜感激!
答案 0 :(得分:1)
首先转义()
,因为特殊的正则表达式字符:
df_data['name'] = df_data['name'].str.replace(' \(C\)', '')
或者:
df_data['name'] = df_data['name'].replace(' \(C\)', '', regex=True)
print(df_data)
id name
0 1 name1
1 2 name2 (B)
2 3 name3
3 4 name4
答案 1 :(得分:0)
在使用regex
时将转义符用于特殊字符:
df_data['name'].str.replace(' \(C\)','')