将前X行添加到其他列中[Pandas]

时间:2020-02-13 13:56:29

标签: python pandas

例如,假设我有一列“ a”

我想给每个样本/行指定数量的“回溯”,以获取先前的值。 例如,这是回溯3的结果...

  a
0  1
1  2
2  3
3  4
4  5

   a  a1  a2  a3
0  1  Nan Nan Nan
1  2  1   Nan Nan
2  3  2   1   Nan
3  4  3   2   1
4  5  4   3   2

1 个答案:

答案 0 :(得分:3)

Series.shiftf-string一起使用:

n = 3
for c in range(1, n+1):
    df[f'a{c}'] = df['a'].shift(c)
print (df)
   a   a1   a2   a3
0  1  NaN  NaN  NaN
1  2  1.0  NaN  NaN
2  3  2.0  1.0  NaN
3  4  3.0  2.0  1.0
4  5  4.0  3.0  2.0

带有列表理解和concat的替代项,最后由DataFrame.join添加到原文:

n = 3
r = range(1, n+1)
df = df.join(pd.concat([df['a'].shift(c) for c in r], axis=1, keys=r).add_prefix('a'))
print (df)
   a   a1   a2   a3
0  1  NaN  NaN  NaN
1  2  1.0  NaN  NaN
2  3  2.0  1.0  NaN
3  4  3.0  2.0  1.0
4  5  4.0  3.0  2.0