删除任何列子集(pandas)中具有空值的行

时间:2017-11-20 03:08:44

标签: python pandas dataframe null

如果我有以下数据帧。如果ParticipationHomeworkTestPresentation中存在空值(如果有四列中的任何一列,则为null),那么我想要将其删除行。我如何在熊猫中实现这一目标。

Name    Participation  Homework  Test Presentation  Attendance
Andrew  92             Null      85   95            88
John    95             88        98   Null          90
Carrie  82             99        96   89            92
Simone  100            91        88   99            90

在这里,我想从数据框中删除除Carrie和Simone之外的所有人。我如何在熊猫中实现这一目标?

我在Stackoverflow上发现了这个,我认为这可能对df = df[pd.notnull(df['column_name'])]有所帮助,但无论如何我可以为所有四列(所以是子集)而不是每个列单独执行此操作吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

如果您使用ne

,则可以跳过替换
df[df.ne('Null').all(1)]

     Name  Participation Homework  Test Presentation  Attendance
2  Carrie             82       99    96           89          92
3  Simone            100       91    88           99          90

答案 1 :(得分:3)

准备工作,让我们替换那个字符串' Null'首先是np.nan。

现在,让我们尝试使用notnullall,轴= 1:

df[df.replace('Null',np.nan).notnull().all(1)]

输出:

   Name  Participation Homework  Test Presentation  Attendance
2  Carrie             82       99    96           89          92
3  Simone            100       91    88           99          90

或使用isnullany~

df[~df.replace('Null',np.nan).isnull().any(1)]

答案 2 :(得分:3)

replace + dropna

df.replace({'Null':np.nan}).dropna()
Out[504]: 
     Name  Participation Homework  Test Presentation  Attendance
2  Carrie             82       99    96           89          92
3  Simone            100       91    88           99          90