擅长:python、mysql、java
<p>可以使用掩码执行此操作:</p>
<pre><code>df = pd.DataFrame()
df['A'] = [0,0,1,0,1]
df['B'] = [1,0,1,1,0]
mask = (df.A == 0)
df.loc[mask,'A'] = df.loc[mask,'B']
A B
0 1 1
1 0 0
2 1 1
3 1 1
4 1 0
</code></pre>
<p>编辑:
好吧,这实际上是一个无效的解决方案:</p>
<pre><code>%timeit df.loc[mask,'A'] = df.loc[mask,'B']
%timeit df.apply(lambda x: x['B'] if x['A']==0 else x['A'], axis=1)
%timeit np.where(df.A.eq(0), df.B, df.A)
5.52 ms ± 556 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
1.27 ms ± 167 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
796 µs ± 89.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
</code></pre>
<p>因此,感谢零这个有效的解决方案与np.where!</p>