Как проверить наличие нулевых элементов в списке в фрейме данных в np.where()?

#python #pandas #numpy #dataframe

#python #панды #numpy #фрейм данных

Вопрос:

Мой фрейм данных, df:

 Col_A Col_B
Apple [1,2,3]
Banana [1,null,4]
Orange [6,null,null]
  

Нули представлены как np.nan s в фрейме данных. Как я могу проверить, все ли значения в каждой строке Col_B равны нулю?
Это мой np.where :

 np.where(pd.isnull(df[Col_B]).all(), "Fail", "Pass")
  

Однако я получаю значение истинности неоднозначно, даже если у меня есть «.all()» там. Есть ли способ обойти эту проблему?

Ответ №1:

Я не верю, что вам нужно использовать np.where() здесь. Вы можете попробовать это двумя другими способами:

 df['one_bad'] = df['Col_B'].apply(lambda x: np.nan in x)
  

вернется True , если в списке есть хотя бы один np.nan.
Но вы можете использовать np.isnan().all() , чтобы проверить, все ли значения np.nan .

 df['all_bad'] = df['Col_B'].apply(lambda x: np.isnan(x).all())
  

вернется True , если все значения в списке равны np.nan и False в противном случае.