Вы можете использовать df.isnull()
с all()
следующим образом:
df = pd.DataFrame({
'DOCTORSEE_DATE_TIME': [1, np.nan, np.nan],
'PT_ACUITY': [2, 3, np.nan],
'SOME_OTHER_COL': [np.nan, 4, 5]
})
cols = ['DOCTORSEE_DATE_TIME', 'PT_ACUITY'] # choose columns that must all be null
results = df[~df[cols].isnull().all(axis=1)]
Результаты:
DOCTORSEE_DATE_TIME PT_ACUITY SOME_OTHER_COL
0 1.0 2.0 NaN
1 NaN 3.0 4.0
Почему это работает:
df[cols].isnull()
дает a True
или False
значение для каждой ячейки:
DOCTORSEE_DATE_TIME PT_ACUITY
0 False False
1 True False
2 True True
Привязка .all(axis=1)
к этому сокращает результаты до одного значения True
или False
для каждой строки (axis=0
будет проверять по столбцам, а не по строкам):
0 False
1 False
2 True
Оператор ~
используется для получения обратных результатов:
0 True
1 True
2 False
Эта серия True
, True
, False
затем используется для разделения нашего исходного DataFrame, поэтому сохраняются только первые две строки.