Pandas按股票分组计算固定基准日期与其他交易日的股价差值方法
Pandas计算单只股票与指定基准日股价差值实现方法
实现逻辑
- 首先将日期列转为datetime格式,避免日期匹配出错
- 定义你需要的基准日期,注意匹配你输入的日期格式
- 提取每只股票在基准日的收盘价作为参照值
- 逐行计算每个交易日收盘价与对应股票基准收盘价的差值
完整可运行代码
import pandas as pd # 读取数据 df = pd.read_csv("my_stocks.csv") # 转换日期列为datetime格式 df["Date"] = pd.to_datetime(df["Date"]) # 定义基准日期,如果是你说的"23.05.2021"格式,就用下面这行注释的代码 # benchmark_date = pd.to_datetime("23.05.2021", format="%d.%m.%Y") benchmark_date = pd.to_datetime("2021-06-23") # 示例用你示例数据中存在的日期 # 方法1:先构造基准价映射表,逻辑最直观 benchmark_close_map = df[df["Date"] == benchmark_date].set_index("Stock")["Close"].to_dict() df["difference"] = df["Close"] - df["Stock"].map(benchmark_close_map) # 方法2:用groupby.transform实现,适合不想单独构造映射表的场景 # df["difference"] = df.groupby("Stock")["Close"].transform( # lambda x: x - x.loc[df["Date"] == benchmark_date].iloc[0] # ) print(df)
补充说明
- 如果你要计算开盘价、最高价等其他价格的差值,把代码里所有的
Close替换成对应的列名即可 - 如果基准日某只股票没有交易数据,差值会自动填充为NaN,你可以根据需求后续用
fillna处理缺失值
内容的提问来源于stack exchange,提问作者Cristian Toma
相关产品推荐
相关产品推荐

