在列行pandas中仅保留空值

时间:2016-05-02 14:57:49

标签: pandas

这应该非常简单,但是我要撞墙,我想创建一个数据框的副本,其中只存在某个列中的空值。我已经尝试过反向连接和下面的工作

new_df=pd.isnull(df.column)

2 个答案:

答案 0 :(得分:1)

我认为您可以isnullany使用loc

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