<p>您可以提取<code>()</code>之间的值,但只能提取由<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.mask.html" rel="nofollow noreferrer">^{<cd4>}</a>中的<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.contains.html" rel="nofollow noreferrer">^{<cd3>}</a>选择<code>$</code>的行:</p>
<pre><code>mask = df['cost'].str.contains('$', na=False, regex=False)
df['total'] = df['total'].mask(mask, df['cost'].str.extract(r"\((.*?)\)" , expand=False))
#another solution from copy and strip ()
#df['total'] = df['total'].mask(mask, df['cost'].str.strip('()'))
print (df)
cost total
0 NaN $519
1 NaN $78
2 xx24 NaN
3 ($1500) $1500
4 NaN $51
5 0.00 NaN
6 ($924) $924
7 NaN $78
</code></pre>
<p>或者,如果可能,用从<code>()</code>提取的值替换<code>total</code>中缺少的值,使用:</p>
<pre><code>df['total'] = df['total'].fillna(df['cost'].str.extract(r"\((.*?)\)" , expand=False))
print (df)
cost total
0 NaN $519
1 NaN $78
2 xx24 NaN
3 ($1500) $1500
4 NaN $51
5 0.00 NaN
6 ($924) $924
7 NaN $78
</code></pre>