【发布时间】:2020-10-12 03:15:06
【问题描述】:
我正在尝试做一些特征工程,我正在测试的一个想法是将以前的观察添加为数据框中的一列。我知道 .shift() 可以在 pandas 中做到这一点,但问题是我只有在它符合特定条件时才会看到它移动。
# add new column for previous value
df_labeled = df_labeled.sort_values(by=['ticker', 'periodDate']) #this ensures data/date are in order
df_labeled['lastValue'] = df_labeled['value'].shift(1) #add's previous value to current row
df_labeled[['ticker', 'periodDate', 'value', 'lastValue']]
它适用于第一项:
ticker periodDate value lastValue
Abc 2010 121000.0 NaN
Abc 2011 125700.0 121000.0
xyz 2010 125000.0 125700.0
xyz 2011 125700.0 125000.0
如您所见,xyz 应该是 NaN,但它是数据框中最后一项的前一个值。
有没有办法有条件地设置它?即如果df_labeled['ticker'] == df_labeled['ticker'].shift(1)
【问题讨论】: