我在数据框中有 2 列(日期和销售价格)。我的预期输出是这样的。我想在数据框中添加一个名为利润的列,该列需要通过当前的销售价格计算 - 第一个销售价格(星级一)
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 中的差异会导致连续行之间的差异。我们如何在 Pandas 上使用 diff 或任何其他函数实现预期的 o/p?
最佳答案
对于像 Index
这样的一般 DatetimeIndex
使用 iloc
和 iat
,但它只适用于位置,所以需要 get_loc
:
pos = df.columns.get_loc('sell_price')
df['profit'] = df.iloc[1:, pos] - df.iat[0, pos]
如果默认
RangeIndex
使用 loc
和 at
: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
关于python - 如何获取pandas中第一行和当前行之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53690587/