如何解决如何在数据框中找到最长的NaN序列?
让我们说我有一个这样的数据框:
Time A B C D
2019-06-17 08:45:00 12089.89 12089.89 12087.71 12087.71
2019-06-17 08:46:00 NaN NaN 12087.71 12087.91
2019-06-17 08:47:00 NaN 12088.21 12084.21 12085.21
2019-06-17 08:48:00 NaN 12090.21 NaN NaN
2019-06-17 08:49:00 NaN 12090.21 NaN NaN
2019-06-17 08:50:00 NaN NaN 12504.11 NaN
2019-06-17 08:51:00 NaN NaN 12503.11 12503.11
2019-06-17 08:52:00 12504.11 NaN 12503.11 12503.11
2019-06-17 08:53:00 12503.61 12503.61 12503.61 12503.61
2019-06-17 08:54:00 12503.61 12503.61 12503.11 12503.11
如何找到整个df中最长的不间断NaN序列的长度? (在示例中为6)有效?
编辑:因为df大约长1mio行,所以忘记强调“有效”一词
解决方法
让我们尝试apply
一个用户定义的函数,该函数依次使用cumsum()
来标识块:
def max_na(s):
isna = s.isna()
blocks = (~isna).cumsum()
return isna.groupby(blocks).sum().max()
df.apply(max_na).max()
# 6.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。