这应该非常简单,但是我要撞墙,我想创建一个数据框的副本,其中只存在某个列中的空值。我已经尝试过反向连接和下面的工作
new_df=pd.isnull(df.column)
答案 0 :(得分:1)
print df.loc[pd.isnull(df).any(1),:]
样品:
print df
a b c d
123 1.0 7 M024 NaN
123 2.0 9 M024 2.0
125 5.0 0 M024 1.0
127 7.0 4 M025 1.0
129 NaN 2 M024 1.0
print pd.isnull(df)
a b c d
123 False False False True
123 False False False False
125 False False False False
127 False False False False
129 True False False False
print pd.isnull(df).any(1)
123 True
123 False
125 False
127 False
129 True
dtype: bool
print df.loc[pd.isnull(df).any(1),:]
a b c d
123 1.0 7 M024 NaN
129 NaN 2 M024 1.0
答案 1 :(得分:1)
要仅向下过滤包含NaN值的行和列,请使用loc
并使用any()
指定差异轴值(列的默认值为0)。
np.random.seed(0)
df = pd.DataFrame(np.random.randn(5,5), columns=list('ABCDE'))
df.iat[0, 0] = np.nan
df.iat[-1, -1] = np.nan
>>> df
A B C D E
0 NaN 0.400157 0.978738 2.240893 1.867558
1 -0.977278 0.950088 -0.151357 -0.103219 0.410599
2 0.144044 1.454274 0.761038 0.121675 0.443863
3 0.333674 1.494079 -0.205158 0.313068 -0.854096
4 -2.552990 0.653619 0.864436 -0.742165 NaN
>>> df.loc[df.isnull().any(axis=1), df.isnull().any()]
A E
0 NaN 1.867558
4 -2.55299 NaN