gpt4 book ai didi

python - 如何在数据框中批量滞后列

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:58 24 4
gpt4 key购买 nike

我有一个超过 100 列的数据框。我需要滞后其中的 60 个,并且我知道需要滞后的列名称。有没有办法批量或仅几行滞后它们?假设我有一个像下面这样的数据框

col1 col2 col3 col4 col5 col6 ... col100
1 2 3 4 5 6 8
3 9 15 19 21 23 31

我知道的唯一方法就是一项一项地去做。即为每列运行 df['col1_lag']=df['col'].shift(1)

这么多专栏似乎太多了。有一个更好的方法吗?提前致谢。

最佳答案

使用shiftadd_prefix对于新的 DataFrame 和 join原文:

df1 = df.join(df.shift().add_suffix('_lag'))
#alternative
#df1 = pd.concat([df, df.shift().add_suffix('_lag')], axis=1)
print (df1)
col1 col2 col3 col4 col5 col6 col100 col1_lag col2_lag col3_lag \
0 1 2 3 4 5 6 8 NaN NaN NaN
1 3 9 15 19 21 23 31 1.0 2.0 3.0

col4_lag col5_lag col6_lag col100_lag
0 NaN NaN NaN NaN
1 4.0 5.0 6.0 8.0

如果只需要滞后某些列,可以通过列表过滤它们:

cols = ['col1','col3','col5']
df2 = df.join(df[cols].shift().add_suffix('_lag'))
print (df2)
col1 col2 col3 col4 col5 col6 col100 col1_lag col3_lag col5_lag
0 1 2 3 4 5 6 8 NaN NaN NaN
1 3 9 15 19 21 23 31 1.0 3.0 5.0

关于python - 如何在数据框中批量滞后列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53354653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com