【问题标题】:How to get the difference between first row and current row in pandas如何在熊猫中获得第一行和当前行之间的差异
【发布时间】:2019-05-10 11:06:42
【问题描述】:

我在数据框中有 2 列(日期和销售价格)。我的预期输出是这样的。我想在数据框中再添加一个名为利润的列,该列需要由当前的 sell_price 计算 - 第一个销售价格(星号)

        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 或 pandas 上的任何其他函数实现预期的 o/p?

【问题讨论】:

  • 可能类似于(df.loc[1:, "sell_price"] - df.loc[0, "sell_price"]).reindex(df.index, fill_value=np.nan)
  • 最好先只显示示例输入,然后显示预期输出@Devesh Agrawal,以避免在恕我直言中混淆。

标签: python pandas


【解决方案1】:

对于一般的IndexDatetimeIndex 使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2011-09-24
    相关资源
    最近更新 更多