找回密码
 立即注册
首页 python python-基础 查看内容

查找系列集中没有NaN值的最长子序列


您好我正在尝试找出一种方法,该方法找到最长的公共连续子序列(在这种情况下是时间间隔),而没有来自一组序列的任何缺失(Nan)值。这是一个示例数据帧。
time  s_1  s_2  s_3
0  1     2    2    Nan
1  2     3    Nan  Nan
2  3     3    2    2
3  4     5    3    10
4  5     8    4    3
5  6     Nan  Nan  7
6  7     5    2    Nan
7  8     Nan  3    Nan

对于这个小例子,“最佳”时间间隔将是3-5或指数2-4。真正的数据框架更大,包含更多系列。是否有可能找到解决此问题的有效方法?

非常感谢你。

解决方法


dropna首先,然后我们使用cumsumwith diff来构建一个用于区分不同组的密钥是继续与否(不同于1)
s=df.dropna()
idx=s.time.groupby(s.time.diff().ne(1).cumsum()).transform('count')
idx
0    1
2    3
3    3
4    3
Name: time, dtype: int64
yourmax=s[idx==idx.max()]
yourmax
   time  s_1  s_2   s_3
2     3  3.0  2.0   2.0
3     4  5.0  3.0  10.0
4     5  8.0  4.0   3.0

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册