如何将包含null和非null的行分为两个不同的DataFrame?

时间:2018-09-21 11:12:21

标签: python pandas numpy dataframe

说我有一个很大的DataFrame(> 10000行),其中有些行包含一个或多个null。如何从原始DataFrame中删除其一个或多个列中包含null的所有行,并将这些行放入另一个DataFrame中?

例如:

原始DataFrame:

data-selector="refusal_alt"

非空DataFrame:

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

包含DataFrame的空值:

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

1 个答案:

答案 0 :(得分:2)

使用documentation检查缺失值:

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

并通过DataFrame.isna测试每行至少True

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

通过DataFrame.any-~进行的最后过滤是用于反转布尔掩码:

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