我有一个基于不同气象站的数据集,用于几个变量(温度,压力等),
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 – 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。