如何在pandas DataFrame中按Ticker分组重置计算Retained Earnings的百分比变化
实现方法
首先需要保证同一只股票(Ticker)的财务数据按时间先后排序,再按Ticker分组计算环比百分比变化即可,核心用pandas的groupby+pct_change方法实现:
步骤1:按时间维度排序
保证每个Ticker的财务报告按时间先后排列,避免计算顺序错误:
import pandas as pd import numpy as np # 按Ticker、财年、财期升序排列,覆盖原始索引 df = df.sort_values(by=['Ticker', 'Fiscal Year', 'Fiscal Period'], ignore_index=True)
步骤2:分组计算百分比变化
按Ticker分组后计算Retained Earnings列的环比变化,每个新Ticker的第一行结果会自动置为空值,符合重置计算逻辑的要求:
df['Retained Earnings 环比变化率'] = df.groupby('Ticker')['Retained Earnings'].pct_change()
可选:异常值与格式优化
如果上期留存收益为0或负数时,pct_change会返回无穷值,可统一替换为空值;也可以直接格式化为百分比字符串:
# 替换正负无穷值为空 df['Retained Earnings 环比变化率'] = df['Retained Earnings 环比变化率'].replace([np.inf, -np.inf], np.nan) # 可选:格式化为带两位小数的百分比形式 df['Retained Earnings 环比变化率'] = df['Retained Earnings 环比变化率'].apply( lambda x: f"{x:.2%}" if pd.notna(x) else x )
内容的提问来源于stack exchange,提问作者Calvin K
相关产品推荐
相关产品推荐

