gpt4 book ai didi

python - Pandas 基于模式长度的阈值数据序列

转载 作者:行者123 更新时间:2023-12-01 01:09:14 25 4
gpt4 key购买 nike

我有这个数据框

    A
0 -2
1 0
2 2
3 2
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 2
13 2
14 2
15 2
16 2
17 3
18 2
19 0
20 2
21 2
22 2

它的情节是这样的

enter image description here

我想根据上面示例中的序列长度对数据进行阈值处理,将 B 部分展平,因为它的长度小于 3,如下所示

enter image description here

最佳答案

不带 for 循环的替代解决方案(使用 @anand_v.singh 的答案中的 df):

  1. 高于基线的记录掩码 (y=0):
    positive_mask = df>0
  • 为有序正值组添加标签:
  •     sequence_groups = positive_mask.astype(int).diff(1).fillna(0).abs().cumsum().squeeze()
  • 检查每个序列组的大小
  •     sequence_size = positive_mask.groupby(sequence_groups).transform(len)
  • 将它们放在一起(只是为了并排查看数据框和步骤结果)
  •     df_extended = pd.concat([df, positive_mask, sequence_groups, sequence_size], axis=1)
    df_extended.columns = ['value', 'is_positive', 'sequence_group', 'sequence_size']
    df_extended

    value is_positive sequence_group sequence_size
    0 -2 False 0.0 2
    1 0 False 0.0 2
    2 2 True 1.0 2
    3 2 True 1.0 2
    4 0 False 2.0 8
    5 0 False 2.0 8
    6 0 False 2.0 8
    7 0 False 2.0 8
    8 0 False 2.0 8
    9 0 False 2.0 8
    10 0 False 2.0 8
    11 0 False 2.0 8
    12 2 True 3.0 7
    13 2 True 3.0 7
    14 2 True 3.0 7
    15 2 True 3.0 7
    16 2 True 3.0 7
    17 3 True 3.0 7
    18 2 True 3.0 7
    19 0 False 4.0 1
    20 2 True 5.0 3
    21 2 True 5.0 3
    22 2 True 5.0 3
    23 0 False 6.0 1
    24 3 True 7.0 2
    25 3 True 7.0 2
    26 0 False 8.0 1
  • 平坦所有正值且序列大小小于 3:
  •     flat_mask = (df_extended.sequence_size < 3) & (df_extended.is_positive)
    df_extended.loc[flat_mask, 'value'] = 0
  • 情节
  •     df_extended.value.plot()

    enter image description here

    关于python - Pandas 基于模式长度的阈值数据序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55014867/

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