如何根据条件值改变大熊猫?

时间:2020-10-11 19:04:54

标签: python pandas

我正在尝试进行一些功能设计,而我正在测试的想法之一是在数据框中添加以前的观察值作为一列。我知道.shift()可以在熊猫中做到这一点,但问题是,只有在满足特定条件的情况下,我才看它移位。

# 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)

1 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,那么您想根据value列来移动ticker列:

df['lastValue'] = df.groupby(['ticker'], as_index=False)['value'].shift(1)
print(df)

打印:

  ticker  periodDate     value  lastValue
0    Abc        2010  121000.0        NaN
1    Abc        2011  125700.0   121000.0
2    xyz        2010  125000.0        NaN
3    xyz        2011  125700.0   125000.0