Скажем, у меня большой 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
Используйте 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