You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas计算单标的上次交易间隔及上次交易类型?

解决方案

首先修正你提供的DataFrame创建代码(原写法参数顺序错误):

import pandas as pd

df = pd.DataFrame({
    'symbol': ["AAPL", "AAPL", "GOOG", "AAPL", "GOOG"],
    'time': [1, 2, 3, 6, 7],
    'type': ["BUY", "SELL", "BUY", "BUY", "BUY"]
})

不需要用merge_asof,直接通过groupby结合shift()就能高效实现需求:

新增时间间隔列

按symbol分组后,用当前行的time减去上一行的time(通过shift(1)获取上一行数据):

df['last_trade_interval'] = df.groupby('symbol')['time'].apply(lambda x: x - x.shift(1))

新增上次交易类型列

同样按symbol分组,对type列执行shift(1)即可获取同一标的的上一次交易类型:

df['last_trade_type'] = df.groupby('symbol')['type'].shift(1)

最终结果

运行后DataFrame内容如下:

symboltimetypelast_trade_intervallast_trade_type
AAPL1BUYNaNNaN
AAPL2SELL1.0BUY
GOOG3BUYNaNNaN
AAPL6BUY4.0SELL
GOOG7BUY4.0BUY

完全匹配你给出的示例结果。

内容的提问来源于stack exchange,提问作者Joey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:55:39