如何在数据帧中延迟批处理中的列



我有一个超过100列的数据帧。我需要滞后其中的60个,并且我知道需要滞后的列名。有没有一种方法可以在批量或几行中延迟它们?假设我有一个类似belwo 的数据帧

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

我知道的唯一方法就是一个接一个地做。即对每列运行CCD_ 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  

如果需要滞后,则可以通过list:对某些列进行筛选

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

最新更新