【问题标题】:Pandas Dataframe pivot with rolling window带有滚动窗口的 Pandas Dataframe 枢轴
【发布时间】:2020-08-14 02:13:52
【问题描述】:

我正在尝试使用PythonPandas(第一个计时器)为一些时间序列建模准备数据。我的DataFrame 看起来像这样:

df = pd.DataFrame({
    'time': [0, 1, 2, 3, 4], 
    'colA': ['a', 'b', 'c', 'd', 'e'], 
    'colB': ['v', 'w', 'x', 'y', 'z'], 
    'value' : [10, 11, 12, 13, 14]
})

#       time  colA  colB  value
# 0     0     a     v     10
# 1     1     b     w     11
# 2     2     c     x     12
# 3     3     d     y     13
# 4     4     e     z     14

是否有可以将其转换为以下格式的函数组合?

# colA-2  colA-1  colA    colB-2  colB-1  colB  value
# _       _       a       _       _       v     10
# _       a       b       _       v       w     11
# a       b       c       v       w       x     12
# b       c       d       w       x       y     13
# c       d       e       x       y       z     14

我对 Python/Pandas 非常陌生,我没有任何具体的代码/结果可以让我接近我需要的...

【问题讨论】:

    标签: python pandas dataframe time-series pivot


    【解决方案1】:

    我会使用pd.concat

    pd.concat([
        df[['colA', 'colB']].shift(i).add_suffix(f'-{i}')
        for i in range(1, 3)], axis=1
    ).fillna('-').join(df)
    
      colA-1 colB-1 colA-2 colB-2  time colA colB  value
    0      -      -      -      -     0    a    v     10
    1      a      v      -      -     1    b    w     11
    2      b      w      a      v     2    c    x     12
    3      c      x      b      w     3    d    y     13
    4      d      y      c      x     4    e    z     14
    

    【讨论】:

      【解决方案2】:

      你可以使用移位功能:

      df['colA-2'] =df['colA'].shift(2, fill_value='-' )
      df['colA-1'] =df['colA'].shift(1,fill_value='-')
      ... 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-08
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 2022-12-19
        相关资源
        最近更新 更多