我的数据集(年度数据)如下所示
CODE Date PRCP TAVG TMAX TMIN
AE000041196 01-01-2020 0 21.1
AE000041196 02-01-2020 0 21.4
AE000041196 03-01-2020 0 21.2 15.4
AE000041196 04-01-2020 0 21.9 14.9
AE000041196 05-01-2020 0 23.7 16.5
AE000041196 06-01-2020 0.5 20.7
AE000041196 07-01-2020 0 18.1 11.5
AE000041196 08-01-2020 0 19.6 10.3
AE000041196 09-01-2020 0.3 20.6 13.8
我试图找出代码中每个值的TMAX和TMIN列的最长连续缺失值[每个'CODE'
的最大连续NaN计数]。例如,从上面有限的数据集:TMAX
的最大连续缺失值为9,TMIN
的最大连续缺失值为2
我正在使用的代码
df['TMAX_nullccount'] = df.TMAX.isnull().astype(int).groupby(df['TMAX'].notnull().astype(int).cumsum()).cumsum()
这会导致数据集中出现错误
CODE Date PRCP TAVG TMAX TMIN TMAX_nullccount
CA1AB000014 10-03-2021 2.3 297
CA1AB000014 11-03-2021 0 298
CA1AB000014 12-03-2021 0 299
CA1AB000014 13-03-2021 0 300
CA1AB000014 14-03-2021 0 301
CA1AB000015 01-01-2021 0 302
CA1AB000015 02-01-2021 0 303
CA1AB000015 03-01-2021 0 304
CA1AB000015 04-01-2021 0 305
理论上,计数(TMAX_nullcount)应该再次从0开始,代码从CA1AB000014
更改为CA1AB000015
。另外,列TMAX_nullcount
中的值不能超过365(年度数据集),但我的代码给出的值远不止这些
预期输出文件(值已组成)
CODE TMAX_maxcnullcount TMIN_maxcnullcount TAVG_maxcnullcount
AE000041196 2 2 0
AEM00041194 1 1 0
AEM00041217 3 1 0
AEM00041218 1 2 45
AFM00040938 65 65 0
AFM00040948 132 132 0
AG000060390 155 141 0
我怎样才能解决这个问题?提前谢谢
您可以使用:
第一次测试是否匹配缺少的值:
您可以尝试以下方法:
groupby
乘以CODE
和连续的零,然后计算大小您的分组结果(aggr->;大小)将是:
现在你可以找到max和min
因此,您的最终解决方案将如下所示:
相关问题 更多 >
编程相关推荐