Pandas 数据帧滚动窗口透视

4

我正在尝试使用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非常陌生,没有任何代码或结果可以让我接近我所需要的内容...

2个回答

2
您可以使用 shift 函数:
df['colA-2'] =df['colA'].shift(2, fill_value='-' )
df['colA-1'] =df['colA'].shift(1,fill_value='-')
... 

2
我会使用 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接