三行代码  ›  专栏  ›  技术社区  ›  Gavin

如何在滚动窗口中为每个组使用熊猫串连接字符串?

  •  1
  • Gavin  · 技术社区  · 1 月前

    我有如下数据集:

        cluster  order label
    0         1      1     a
    1         1      2     b
    2         1      3     c
    3         1      4     c
    4         1      5     b
    5         2      1     b
    6         2      2     b
    7         2      3     c
    8         2      4     a
    9         2      5     a
    10        2      6     b
    11        2      7     c
    12        2      8     c
    

    我想添加一列,将该列以前的值连接到一个3的滚动窗口 label

        cluster  order label roll3
    0         1      1     a   NaN
    1         1      2     b   NaN
    2         1      3     c   NaN
    3         1      4     c   abc
    4         1      5     b   bcc
    5         2      1     b   NaN
    6         2      2     b   NaN
    7         2      3     c   NaN
    8         2      4     a   bbc
    9         2      5     a   bca
    10        2      6     b   caa
    11        2      7     c   aab
    12        2      8     c   abc
    
    1 回复  |  直到 1 月前
        1
  •  1
  •   tdy piRSquared    1 月前

    使用 groupby.apply shift 并在标签上注明:

    df['roll3'] = (df.groupby('cluster')['label']
                     .apply(lambda x: x.shift(3) + x.shift(2) + x.shift(1)))
    
    #     cluster  order label roll3
    # 0         1      1     a   NaN
    # 1         1      2     b   NaN
    # 2         1      3     c   NaN
    # 3         1      4     c   abc
    # 4         1      5     b   bcc
    # 5         2      1     b   NaN
    # 6         2      2     b   NaN
    # 7         2      3     c   NaN
    # 8         2      4     a   bbc
    # 9         2      5     a   bca
    # 10        2      6     b   caa
    # 11        2      7     c   aab
    # 12        2      8     c   abc