简体   繁体   English

数据框列的选择性移动

[英]Selective shifting of dataframe columns

I have a dataframe with a number of columns and would selectively like to lag all bar one column (named target) by a specified number of steps. 我有一个具有许多列的数据框,并且有选择地希望将所有列(命名为目标)滞后指定的步数。

def: shift_target(df,target,lag):
     df[df.columns != target].shift(lag)
     df = df.dropna()
     return df 

The above does not seem to work. 以上似乎不起作用。 Can i specify do not shift one column? 我可以指定不移一列吗?

eg 例如

在此处输入图片说明

You can construct a new dataframe. 您可以构造一个新的数据框。 This is usually more efficient than manipulating an existing dataframe via Pandas methods. 这通常比通过Pandas方法处理现有数据框更有效。 For example: 例如:

n = 4

res = df.iloc[:-n, 1:].copy()
res.index = df.index[n:]
res['Target'] = df['Target'].iloc[n:].values

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM