我是一名有帮助的助手,可以为您翻译文本。
我正在尝试解决一个相对简单的问题,但不清楚如何在 pandas 中实现它。
我有一个 pandas 数据框,其中包含一组我感兴趣的列。 列集存储在 factors
列表中:
#get df
df = pd.read_sql(sql=sqlString, con = engine)
#shuffle
df = df.sample(frac=1, random_state=123).reset_index(drop=True)
#list of fields we want
factors = ['GRP_RANK', 'BK_YIELD', 'SALES_YIELD', 'EARNINGS_YIELD_LTM', 'CASHFLOW_YIELD', 'ROE', 'ROIC',
'ROA', 'GROSS_MGN', '12MVT', '1MVT', 'BETA_3Y', 'BETA_1Y', 'P_TOTAL_RETURN(-1,0,USD)']
现在,数据框中有一个列
DATE
。对于每条记录中的每个factors
,我想将该因子的值除以特定日期该因子值的平均值。我已经成功获取了每个因子每天的平均值:
dfGroup = df[factors + ["DATE"]].groupby('DATE')[factors].mean()
但我不确定该如何进行。我能想到的唯一方法是通过使用DATE字段左连接df
和dfGroup
来获取新的大数据框,然后逐列进行一些繁琐的列除法操作,但也许有更简单的方法吗?