将熊猫移动窗口与列表进行比较,找出错误最少的窗口。

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

以上是关于将熊猫移动窗口与列表进行比较,找出错误最少的窗口。的主要内容,如果未能解决你的问题,请参考以下文章

使用熊猫将列表中的单词与频率列表中的单词进行比较

我想将国家/地区列表与作为熊猫数据框 Python 中字典对象类型的列数据进行比较

为啥熊猫滚动意味着居中窗口

通过在熊猫 DF 上具有步距的窗口进行索引

熊猫滚动窗口和日期时间索引:“偏移”是啥意思?

计算移动窗口中非 na 值最少的滚动平均值