用pandas替换系列中的值

4

为什么我想替换值时必须使用这个代码块:

data['Organization'].str.replace('Greece','Rome')

为什么我不能使用这个:
data['Organization'].replace('Greece','Rome').

我曾看到其他人在不传递字符串方法的情况下使用第二种方法。我的问题是,我是否可以使用replace函数传递一系列方法,以及代码行是什么?

2个回答

7

pd.Series.replacepd.Series.str.replace是不同的:

下面是一个最简示例,演示了二者之间的区别:

df = pd.DataFrame({'A': ['foo', 'fuz', np.nan]})

df['B'] = df['A'].replace(['foo', 'fuz'], ['food', 'fuzzy'])
df['C'] = df['A'].str.replace('f.', 'ba', regex=True)

print(df)

     A      B    C
0  foo   food  bao
1  fuz  fuzzy  baz
2  NaN    NaN  NaN

1
默认情况下,str.replace 进行基于正则表达式的替换,也可以用于部分匹配。而另一方面,replace 只会进行基于完全匹配的替换,除非开启 regex 标志。
data['Organization'] = (
    data['Organization'].replace({'Greece': 'Rome'}, regex=True))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接