如何基于日期与Ticker分组计算DataFrame中Rate的日变动值?
解决方案
你可以通过groupby按Ticker分组,再结合shift()方法实现所有股票的日Rate变动计算,步骤如下:
1. 确保数据有序(可选但推荐)
如果你的DataFrame日期或股票顺序存在混乱,先执行排序保证计算逻辑准确:
df = df.sort_values(['Ticker', 'Trade Date']).reset_index(drop=True)
2. 新增日变动列
直接对每个股票分组后,计算当前Rate与前一日Rate的差值:
df['Rate_Daily_Change'] = df['Rate'] - df.groupby('Ticker')['Rate'].shift(1)
或者用transform写法,效果一致:
df['Rate_Daily_Change'] = df.groupby('Ticker')['Rate'].transform(lambda x: x - x.shift(1))
处理后结果示例
执行后DataFrame会新增一列,展示各股票的日Rate变动,核心片段如下:
| Trade Date | Ticker | Rate | Rate_Daily_Change |
|---|---|---|---|
| 2022-12-27 | A | 0.01 | NaN |
| 2022-12-28 | A | 0.50 | 0.49 |
| 2022-12-29 | A | 1.01 | 0.51 |
| 2022-12-27 | B | 2.82 | NaN |
| 2022-12-28 | B | 2.72 | -0.10 |
| 2022-12-29 | B | 3.42 | 0.70 |
每个股票的最早日期数据因无前置对比值,会显示NaN,符合业务逻辑。
内容的提问来源于stack exchange,提问作者Lucas Almeida
相关产品推荐
相关产品推荐

