Ответ 1
Вы можете использовать any
axis=1
чтобы проверить хотя бы одно значение True
на строку, а затем выполнить фильтрацию с логическим индексированием:
null_data = df[df.isnull().any(axis=1)]
Во время работы в Pandas в Python...
Я работаю с набором данных, который содержит некоторые отсутствующие значения, и я хотел бы вернуть DataFrame, который содержит только те строки, у которых отсутствуют данные. Есть ли хороший способ сделать это?
(Мой текущий метод для этого - неэффективный "взгляд, чтобы увидеть, какой индекс отсутствует в фреймворке без пропущенных значений, а затем вывести df из этих индексов".)
Вы можете использовать any
axis=1
чтобы проверить хотя бы одно значение True
на строку, а затем выполнить фильтрацию с логическим индексированием:
null_data = df[df.isnull().any(axis=1)]
Аналогично метру ответ,
null_data = df[np.logical_or.reduce(df.isnull(), axis=1)]
Тестовое задание
n = 2
df = pd.DataFrame({'a':np.tile([0,1,2,3,4,np.nan],n),
'b':np.tile([0,1,2,3,np.nan,5],n)})
x = df[np.logical_or.reduce(df.isnull().values,axis=1)]
y = df[df.isnull().any(axis=1)]
x.equals(y)