将熊猫移动窗口与列表进行比较,找出错误最少的窗口。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将熊猫移动窗口与列表进行比较,找出错误最少的窗口。相关的知识,希望对你有一定的参考价值。
我已经把我的数据集减少到最后几步。我的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
以上是关于将熊猫移动窗口与列表进行比较,找出错误最少的窗口。的主要内容,如果未能解决你的问题,请参考以下文章