gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:28:26 24 4
gpt4 key购买 nike

您好,我正在尝试找出一种方法,该方法可以找到一组序列中没有任何缺失(Nan)值的最长公共(public)连续子序列(在本例中为时间间隔)。这是一个示例数据框。

   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。真实的数据框更大并且包含更多系列。是否有可能找到有效的解决方案来解决这个问题?

非常感谢。

最佳答案

我通过一些设置更新了这个工作示例:

import pandas as pd
import numpy as np

s1 = [2,3,3,5,8,np.NAN,5,np.NAN,1]
s2 = [2,np.NAN,2,3,4,np.NAN,2,3,1]
s3 = [np.NAN,np.NAN,2,10,3,7,np.NAN,np.NAN,1]
data = {'time':np.arange(1,9+1),'s_1':s1,'s_2':s2,'s_3':s3}

df = pd.DataFrame(data)
print(df)

这将创建一个您在上面发布的 DataFrame,但末尾有一个附加条目,因此将有两个具有连续索引的区域。

我认为这里最好的方法是删除所有丢失数据的行,然后计算剩余索引中的最长序列。像这样的事情应该可以解决问题:

sequence = np.array(df.dropna(how='any').index)    
longest_seq = max(np.split(sequence, np.where(np.diff(sequence) != 1)[0]+1), key=len)
print(df.iloc[longest_seq])

这会给你:

   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

关于python - 查找系列集中没有 NaN 值的最长子序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54066898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com