我需要根据条件删除所有行,但是如果该列中有空条目,我想保留这些行

时间:2019-04-07 14:09:12

标签: python pandas

我正在使用的数据框有一个年龄列,称为年龄。 age列中的条目是无意义的,因为它的值大于101且小于1。age列也具有空条目。

我想删除无效年龄的行。 然后,我想用剩余的平均年龄填充空条目。

df = df[(df.age <102) & (df.age > 0)] 

当我这样做时,它不仅会丢弃无意义的年龄,还会丢弃空条目。我考虑过先填充均值,但我不想包含无意义的年龄并曲解均值。

1 个答案:

答案 0 :(得分:0)

这至少可以通过两种方式完成:

方法一:

还保留面具中的nan个值:

df = df[((df.age <102) & (df.age > 0))|(df.age.isnull())]

,然后填写nan值:

df = df.fillna(df.age.mean())

方法二:

通过仅在屏蔽的数据帧上应用nan来填充mean值:

df = df.fillna(df[((df.age <102) & (df.age > 0))]["age"].mean())

然后套上面具:

df = df[((df.age <102) & (df.age > 0))]