Как разделить пустые и ненулевые содержащие строки в два разных фрейма данных?

1

Скажем, у меня большой DataFrame (> 10000 строк), в котором есть несколько строк, содержащих один или несколько нулей. Как удалить все строки, содержащие нуль в одном или нескольких своих столбцах из исходного DataFrame, и поместить строки в другой DataFrame?

например:

Исходный DataFrame:

         a    b    c
1    "foo"    5    3
2    "bar"    9    1
3      NaN    5    4
4    "foo"  NaN    1

Non-Null DataFrame:

         a    b    c
1    "foo"    5    3
2    "bar"    9    1

Нуль, содержащий DataFrame:

         a    b    c
1      NaN    5    4
2    "foo"  NaN    1
Теги:
pandas
dataframe
numpy

1 ответ

2
Лучший ответ

Используйте DataFrame.isna для проверки отсутствующих значений:

print (df.isna())
#print (df.isnull())
       a      b      c
1  False  False  False
2  False  False  False
3   True  False  False
4  False   True  False

И проверьте, если по крайней мере True для строки DataFrame.any:

mask = df.isna().any(axis=1)
#oldier pandas versions
mask = df.isnull().any(axis=1)
print (mask)
1    False
2    False
3     True
4     True
dtype: bool

Последний фильтр с помощью boolean indexing - ~ для инвертирования булевой маски:

df1 = df[~mask]
df2 = df[mask]

print (df1)
     a    b  c
1  foo  5.0  3
2  bar  9.0  1

print (df2)
     a    b  c
3  NaN  5.0  4
4  foo  NaN  1
  • 1
    Какая легенда Я слишком долго боролся с этим и продолжал пытаться использовать циклы для решения проблемы, что, я думаю, невероятно неэффективно по сравнению с этим. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню