如何在pandas数据框中更改文本的fragmnet

时间:2016-04-15 16:10:17

标签: python pandas dataframe

我在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

有人有什么建议吗?

3 个答案:

答案 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_