Python-基于集合NaN计数删除组
我有一个基于多个变量(温度、压力等)的不同气象站的数据集 我想删除“stationID”组,它们有超过一定数量的NAN(考虑计数中的所有变量) 如果我尝试Python-基于集合NaN计数删除组,python,pandas,Python,Pandas,我有一个基于多个变量(温度、压力等)的不同气象站的数据集 我想删除“stationID”组,它们有超过一定数量的NAN(考虑计数中的所有变量) 如果我尝试 df.loc[df.groupby('station')['temperature'].filter(lambda x: len(x[pd.isnull(x)] ) < 30).index] df.loc[df.groupby('station')['temperature'].过滤器(λx:len(x[pd.isnull(x)])
df.loc[df.groupby('station')['temperature'].filter(lambda x: len(x[pd.isnull(x)] ) < 30).index]
df.loc[df.groupby('station')['temperature'].过滤器(λx:len(x[pd.isnull(x)])<30.索引]
它可以工作,如下所示:
但是上面的例子只考虑了“温度”。因此,我如何考虑可用变量的NaN总数?即:我想删除一个组,其中[variable1,variable2,variable3,…]中的NaN总数小于阈值。这应该可以:
df.groupby('stationID').filter(lambda g: g.isnull().sum().sum() < 4)
@谢谢。我们似乎没有跨数据帧求和的函数。
df.groupby('stationID').filter(lambda g:g.isnull().values.sum()<3)
——关于值,您可以做一次sum
。
df.groupby('stationID').filter(lambda g: g.isnull().sum().sum() < 4)
df.groupby('stationID').filter(lambda g: g.isnull().sum().sum() < 4)
stationID Time Temperature Pressure
0 123 1 30.0 1010.5
1 123 2 31.0 1009.0
2 202 1 24.0 NaN
3 202 2 24.3 NaN
4 202 3 NaN 1000.3
df.groupby('stationID').filter(lambda g: g.isnull().sum().sum() < 3)
stationID Time Temperature Pressure
0 123 1 30.0 1010.5
1 123 2 31.0 1009.0