基于yfinance获取的DataFrame计算Day_Delta列:当日首个Open_Value涨跌幅
计算Day_Delta列的实现方法
核心逻辑:按股票代码+交易日期分组,取每个分组第一个时间点的Open_Value作为当日基准价,再用每个时间点的Open_Value计算相对于基准价的涨跌幅百分比即可。
具体实现代码如下:
- 先确保Datetime列转换为pandas支持的时间格式:
import pandas as pd # 转换时间列格式,适配带时区的时间数据 df['Datetime'] = pd.to_datetime(df['Datetime'])
- 按分组获取每个交易日的首个开盘基准价,再计算涨跌幅:
# 按股票代码、交易日期分组,取每组第一个开盘价作为当日基准 df['day_open_base'] = df.groupby(['symbol', df['Datetime'].dt.date])['Open_Value'].transform('first') # 计算相对涨跌幅百分比,这里保留2位小数,可按需调整 df['Day_Delta'] = ((df['Open_Value'] / df['day_open_base'] - 1) * 100).round(2) # 可选:删除临时生成的基准价列 df.drop('day_open_base', axis=1, inplace=True)
你提供的示例数据计算完成后,Day_Delta列的结果如下:
| 序号 | Day_Delta |
|---|---|
| 0 | 0.00 |
| 1 | -0.63 |
| 2 | -0.76 |
| 3 | -0.52 |
| 4 | -0.94 |
内容的提问来源于stack exchange,提问作者spartanboy
相关产品推荐
相关产品推荐

