我有一个Pandas DataFrame temp_df
,它有一堆列,包括7个滞后列(t-1, t-2, ..., t-7
)。
t-1 t-2 t-3 t-4 t-5 t-6 t-7
date
2010-01-08 81.0 104.0 124.0 5.0 113.0 34.0 101.0
2010-01-09 67.0 81.0 104.0 124.0 5.0 113.0 34.0
2010-01-10 89.0 67.0 81.0 104.0 124.0 5.0 113.0
2010-01-11 132.0 89.0 67.0 81.0 104.0 124.0 5.0
2010-01-12 105.0 132.0 89.0 67.0 81.0 104.0 124.0
我想将第二行的滞后列更改为与第一行的滞后列相同。理想情况下,改变后看起来像这样:
t-1 t-2 t-3 t-4 t-5 t-6 t-7
date
2010-01-08 81.0 104.0 124.0 5.0 113.0 34.0 101.0
2010-01-09 81.0 104.0 124.0 5.0 113.0 34.0 101.0
2010-01-10 89.0 67.0 81.0 104.0 124.0 5.0 113.0
2010-01-11 132.0 89.0 67.0 81.0 104.0 124.0 5.0
2010-01-12 105.0 132.0 89.0 67.0 81.0 104.0 124.0
我试过这个:
lag_cols = ["t-" + str(i) for i in range(1,8)]
temp_df.iloc[1][lag_cols] = temp_df.iloc[0][lag_cols]
但它导致temp_df
没有变化。
知道为什么会这样做/如何实现这种改变?
谢谢!
答案 0 :(得分:1)
您可以像这样分配loc
'个切片 -
df.loc[df.index[1], lag_cols] = df.loc[df.index[0], lag_cols]
df
t-1 t-2 t-3 t-4 t-5 t-6 t-7
date
2010-01-08 81.0 104.0 124.0 5.0 113.0 34.0 101.0
2010-01-09 81.0 104.0 124.0 5.0 113.0 34.0 101.0
2010-01-10 89.0 67.0 81.0 104.0 124.0 5.0 113.0
2010-01-11 132.0 89.0 67.0 81.0 104.0 124.0 5.0
2010-01-12 105.0 132.0 89.0 67.0 81.0 104.0 124.0
请注意loc
只接受标签,所以你需要跳过几个环节,但是非常可行。