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

如何在DataFrame中按公司分组高效计算股票日收益率

高效实现方案

完全不需要提取唯一公司名再循环计算,用Pandas原生的矢量化分组操作即可实现,代码更简洁,处理大数据集时效率比手动循环高数十倍。


前置操作(必做)

首先要确保每个公司的记录按日期升序排列,避免时序错乱导致收益率计算错误:

import pandas as pd

# 转换日期列为datetime类型,防止字符串排序出错
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
# 按公司名、日期升序排序,重置索引
df = df.sort_values(by=['Company Name', 'Date'], ignore_index=True)

核心计算代码

仅需一行即可完成日收益率计算:

# 按公司分组计算股价涨跌幅,默认第一条记录返回NaN,符合需求
df['Daily Returns'] = df.groupby('Company Name')['stock price'].pct_change()

# 若需要和示例输出一致保留1位小数,改成下行代码即可
# df['Daily Returns'] = df.groupby('Company Name')['stock price'].pct_change().round(1)

原理说明

pct_change()是Pandas内置的涨跌幅计算方法,公式为(当前值 - 前序值) / 前序值,分组后会单独为每个公司的序列计算,自动将每个公司第一条无前置参考的记录返回NaN,不需要额外做判断处理。所有操作均为底层C实现的矢量化运算,避免了Python层循环的性能开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:06:01