gpt4 book ai didi

python - 将 pandas 移动窗口与列表进行比较,以找到错误最少的窗口

转载 作者:行者123 更新时间:2023-12-04 15:30:24 24 4
gpt4 key购买 nike

我已将我的数据集缩减到最后几个步骤。我的 Pandas 数据框看起来像这样

    FAC
0 1
1 2
2 1
3 3
4 2
5 1
6 2
7 1
8 1
9 3
10 2
11 1
12 2
13 3
14 1

我还有一个我确定匹配的列表。

match_list = [1, 2, 1, 1, 3]

我正在寻找的是滑过(5 项窗口)数据框列并找到与列表模式匹配的行。最终结果看起来像这样。如果有任何帮助,我将不胜感激。

    FAC Error
0 1 some val
1 2 some val
2 1 some val
3 3 some val
4 2 some val
5 1 some val
6 2 some val
7 1 0
8 1 some val
9 3 some val
10 2 some val
11 1 some val
12 2 some val
13 3 some val
14 1 some val

最佳答案

这可以通过rolling来完成:

match_list = [1, 2, 1, 1, 3]
match_list = np.array(match_list)

def match(x):
return (len(x)==len(match_list) and (x==match_list).all())


df['error'] = np.where(df.FAC.rolling(5, center=True).apply(match)==1, 0, 'some value')

输出:

    FAC       error
0 1 some value
1 2 some value
2 1 some value
3 3 some value
4 2 some value
5 1 some value
6 2 some value
7 1 0
8 1 some value
9 3 some value
10 2 some value
11 1 some value
12 2 some value
13 3 some value
14 1 some value

更新:要对匹配进行计数,您可以在函数内简单地执行 mean 而不是 all:

def count_match(x):
return (len(x)==len(match_list))* (x==match_list).mean()

df['error'] = df.FAC.rolling(5,center=True).apply(count_match)

输出:

    FAC  error
0 1 NaN
1 2 NaN
2 1 0.6
3 3 0.0
4 2 0.4
5 1 0.4
6 2 0.2
7 1 1.0
8 1 0.2
9 3 0.2
10 2 0.4
11 1 0.6
12 2 0.0
13 3 NaN
14 1 NaN

关于python - 将 pandas 移动窗口与列表进行比较,以找到错误最少的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61371963/

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