<p><strong>说明:</strong></p>
<p>当你像这样应用它-你是在处理字符串,而不是熊猫系列:</p>
<pre><code>In [42]: df['Name'].apply(lambda x: print(type(x)))
<class 'str'> # < NOTE
<class 'str'> # < NOTE
<class 'str'> # < NOTE
Out[42]:
0 None
1 None
2 None
Name: Name, dtype: object
</code></pre>
<p>它的意思是:</p>
^{pr2}$
<p><strong>解决方案:</strong></p>
<p>正确使用<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.replace.html" rel="nofollow noreferrer">Series.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad', axis=None)</a>(不使用<code>Series.apply()</code>)-根据默认值(<code>regex=False</code>),它将替换整个字符串-正如您预期的那样:</p>
<pre><code>In [39]: df.Name.replace('Mary','Amy')
Out[39]:
0 Joe
1 Amy
2 Marybeth
Name: Name, dtype: object
</code></pre>
<p>您可以显式指定<code>regex=True</code>,这将替换子字符串:</p>
<pre><code>In [40]: df.Name.replace('Mary','Amy', regex=True)
Out[40]:
0 Joe
1 Amy
2 Amybeth
Name: Name, dtype: object
</code></pre>
<p>注意:<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.replace.html" rel="nofollow noreferrer">Series.str.replace(pat, repl, n=-1, case=None, flags=0)</a>没有<code>regex</code>参数-它总是将<code>pat</code>和{<cd6>}视为RegEx:</p>
<pre><code>In [41]: df.Name.str.replace('Mary','Amy')
Out[41]:
0 Joe
1 Amy
2 Amybeth
Name: Name, dtype: object
</code></pre>