我在df中替换文本时遇到问题。我尝试使用df.replace()函数但在我的情况下它失败了。所以这是我的例子:
df = pd.DataFrame({'col_a':['A', 'B', 'C'], 'col_b':['_world1_', '-world1_', '*world1_']})
df = df.replace(to_replace='world1', value='world2')
不幸的是,这段代码没有改变任何东西,我的df中仍然有world1
有人有什么建议吗?
答案 0 :(得分:1)
使用vectorised str.replace
替换文字中的字符串匹配:
In [245]:
df = pd.DataFrame({'col_a':['A', 'B', 'C'], 'col_b':['_world1_', '-world1_', '*world1_']})
df['col_b'] = df['col_b'].str.replace('world1', 'world2')
df
Out[245]:
col_a col_b
0 A _world2_
1 B -world2_
2 C *world2_
答案 1 :(得分:1)
您要替换的值不存在。
那个有效:
import pandas as pd
df = pd.DataFrame({'col_a':['A', 'B', 'C'], 'col_b':['_world1_', '-world1_', '*world1_']})
print df
df = df.replace(to_replace='*world1_', value='world2')
print df
答案 2 :(得分:0)
你走了:
df.col_b = df.apply(lambda x: x.col_b.replace('world1','world2'), axis = 1)
In [13]: df
Out[13]:
col_a col_b
0 A _world2_
1 B -world2_
2 C *world2_
可能有更多选项,但是您使用的是函数replace
,它也可以与正则表达式一起使用
In [21]: df.replace('(world1)','world2',regex=True)
Out[21]:
col_a col_b
0 A _world2_
1 B -world2_
2 C *world2_