我有一个基于不同气象站的多个变量(温度、压力等)的数据集,
stationID | Time | Temperature | Pressure |...
----------+------+-------------+----------+
123 | 1 | 30 | 1010.5 |
123 | 2 | 31 | 1009.0 |
202 | 1 | 24 | NaN |
202 | 2 | 24.3 | NaN |
202 | 3 | NaN | 1000.3 |
...
我想删除“stationID”组,这些组的 NaN 数量超过一定数量(考虑到计数中的所有变量)。
如果我尝试,
df.loc[df.groupby('station')['temperature'].filter(lambda x: len(x[pd.isnull(x)] ) < 30).index]
它有效,如下所示:Python pandas - 根据 NaN 计数阈值删除组 https://stackoverflow.com/questions/38572079/python-pandas-remove-groups-based-on-nan-count-threshold
但上面的例子只考虑了“温度”。所以,我如何考虑可用变量的 NaN 总和?即:我想删除一个组,其中 [variable1,variable2,variable3,...] 中 NaN 的总和小于阈值。
这应该有效:
df.groupby('stationID').filter(lambda g: g.isnull().sum().sum() < 4)
您可以更换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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)