首页 文章

如何在pandas中获取第一行和当前行之间的差异

提问于
浏览
1

我在dataframe中有2列(date&sell_price) . 我的预期输出是这样的 . 我想在数据框中再添加一个名为profit的列,需要按当前的sell_price计算 - 首次卖出价格(星级1)

date            sell_price  profit(needs to be added)
    0   2018-10-26       **21.20**    NaN
    1   2018-10-29       15.15      -6.05
    2   2018-10-30       15.65      -5.55
    3   2018-10-31        0.15     -21.05
    4   2018-11-01        5.20     -16.00

我知道pandas中的diff会给出连续行之间的差异 . 我们怎样才能在大熊猫上实现diff或其他任何功能的预期o / p?

1 回答

  • 4

    一般 Index 喜欢 DatetimeIndex 使用ilociat,但它只适用于位置,所以必要get_loc

    pos = df.columns.get_loc('sell_price')
    df['profit'] =  df.iloc[1:, pos] - df.iat[0, pos]
    

    如果默认 RangeIndex 使用locat

    df['profit'] =  df.loc[1:, 'sell_price'] - df.at[0, 'sell_price']
    

    print (df)
             date  sell_price  profit
    0  2018-10-26       21.20     NaN
    1  2018-10-29       15.15   -6.05
    2  2018-10-30       15.65   -5.55
    3  2018-10-31        0.15  -21.05
    4  2018-11-01        5.20  -16.00
    

相关问题