pandas:取每一行的差异
pandas: taking the diff of every second row
我有一个看起来像这样的数据框
price signal
time
2017-10-28 13:54:00 293.18 buy
2017-11-02 17:13:04 285.30 sell
2017-11-02 18:40:04 283.24 buy
2017-11-03 08:40:06 291.23 sell
2017-11-03 12:38:06 294.26 buy
2017-11-05 13:33:06 296.52 sell
我想创建一个利润列,填充前一个 buy/sell 货币对的差值
price signal profit
time
2017-10-28 13:54:00 293.18 buy
2017-11-02 17:13:04 285.30 sell -7.88
2017-11-02 18:40:04 283.24 buy
2017-11-03 08:40:06 291.23 sell 7.99
2017-11-03 12:38:06 294.26 buy
2017-11-05 13:33:06 296.52 sell 2.29
我最好怎么做?
也欢迎使用替代或更有效的方法来计算利润
我可能会这样做:
df['profit'] = df.price - df.price.shift()
你总是在开仓前平仓吗?
我会建议一个 trade_id 专栏,用于合并交易。
IIUC 使用 cumsum
创建组密钥,然后 diff
df.groupby(df.signal.eq('buy').cumsum())['price'].diff()
我有一个看起来像这样的数据框
price signal
time
2017-10-28 13:54:00 293.18 buy
2017-11-02 17:13:04 285.30 sell
2017-11-02 18:40:04 283.24 buy
2017-11-03 08:40:06 291.23 sell
2017-11-03 12:38:06 294.26 buy
2017-11-05 13:33:06 296.52 sell
我想创建一个利润列,填充前一个 buy/sell 货币对的差值
price signal profit
time
2017-10-28 13:54:00 293.18 buy
2017-11-02 17:13:04 285.30 sell -7.88
2017-11-02 18:40:04 283.24 buy
2017-11-03 08:40:06 291.23 sell 7.99
2017-11-03 12:38:06 294.26 buy
2017-11-05 13:33:06 296.52 sell 2.29
我最好怎么做?
也欢迎使用替代或更有效的方法来计算利润
我可能会这样做:
df['profit'] = df.price - df.price.shift()
你总是在开仓前平仓吗?
我会建议一个 trade_id 专栏,用于合并交易。
IIUC 使用 cumsum
创建组密钥,然后 diff
df.groupby(df.signal.eq('buy').cumsum())['price'].diff()