Я предлагаю использовать numpy.select
, а для строк с возвращенным False для обеих логических масок использовать параметр default
, например. скаляр 0
:
df = pd.DataFrame({
'a':[-4,5,-4,5,5,4],
'b':[7,-8,-9,4,2,3],
})
mask1 = df['a'] > 0
mask2 = df['b'] > 0
df['c'] = np.select([mask1, mask2],
[df['a'], df[['a', 'b']].min(axis=1)],
default=0)
print (df)
a b c
0 -4 7 -4
1 5 -8 5
2 -4 -9 0
3 5 4 5
4 5 2 5
5 4 3 4