Как эффективно создать новый столбец, который является минимумом столбца 3 и столбца 2, если столбец 1 имеет определенное значение?
Пример:
my_dataframe=pd.DataFrame({'col1':[1.0,2.0,3.0],
'col2':[4.0,5.0,6.0],
'col3':[0.25,np.nan,0.25]})
my_dataframe = my_dataframe.assign(col4 = lambda x: np.where(x['col1']>1, np.minimum(x['col2'], x['col3']), 0))
RuntimeWarning: invalid value encountered in minimum
Я предполагаю, что функция np.minimum
не может обработать NA, так как я могу обойти это? Функция numpy.nanmin также не работает.
Возвращает следующую ошибку, поскольку она не применяется к массиву.
TypeError: 'Series' object cannot be interpreted as an integer
Итак, я попытался написать это следующим образом
my_dataframe = my_dataframe.assign(col4 = lambda x: np.where(x['col1']>1, np.nanmin(x['col2'].values(), x['col3'].values()), 0))
, который возвращает ошибку:
TypeError: 'numpy.ndarray' object is not callable