替换系列熊猫中的值



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

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

为什么我不能使用它:

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

我以前见过其他人在没有传递字符串方法的情况下使用方法二。 我的问题是我可以使用替换函数传递系列方法吗,代码行是什么?

pd.Series.replace

pd.Series.str.replace不同:

  • pd.Series.replace用于替换整个元素。它也适用于非字符串元素。
  • pd.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

默认情况下,str.replace会进行基于正则表达式的替换,该替换也适用于部分匹配。replaceOTOH 默认情况下只会基于完全匹配执行替换,除非regex标志设置为 true。

data['Organization'] = (
data['Organization'].replace({'Greece': 'Rome'}, regex=True))

最新更新