如何在DataFrame中按公司计算每日收益率并添加新列
按公司计算每日收益率的实现方法
操作步骤
要实现按每个公司单独计算每日收益率,需先保证数据有序,再分组执行百分比变化计算,具体如下:
- 导入依赖库
import pandas as pd import numpy as np
- 排序数据
先按公司代码(company_tic)分组,再按日期(date)升序排序,避免因日期乱序导致计算逻辑出错:
df = df.sort_values(by=['company_tic', 'date'])
- 分组计算收益率
使用groupby按公司分组后,调用pct_change()方法直接生成收益率列。该方法的计算逻辑完全匹配(当日价格 - 前一日价格)/前一日价格,且当某公司无前置日期数据时,自动返回np.nan:
df['daily_return'] = df.groupby('company_tic')['price'].pct_change()
效果示例
以示例中的xyz公司数据为例:
- 2020-01-01的
daily_return为np.nan(无前置数据) - 2020-01-02的收益率计算结果为
(20.14 - 20.89)/20.89 ≈ -0.0359,与pct_change()的输出一致
内容的提问来源于stack exchange,提问作者Marie-Pier St-Vincent
相关产品推荐
相关产品推荐

