对于python来说,我还是一个新手,我一直在努力创建一个基于每个项的变量值的计算列。
下面的表中DF是 Dataframe 名称
我正在尝试创建一个“PE Comp”列,该列获取每个股票代码的PE值,并将其除以行业平均PE比率。
我最成功的尝试是创建一个.groupby industry Dataframe (y),它计算了每个行业的平均值。这些数字是正确的。完成后,我创建了以下代码块:
for i in DF['Industry']:
DF['PE Comp'] = DF['PE Ratio'] / y.loc[i,'PE Ratio']
然而,数字是不正确的,我已经测试过了,y.loc除数在正确的数字下工作得很好,这意味着问题来自于被除数。
有什么建议可以帮助我克服这个问题吗?
提前感谢!
2条答案
按热度按时间vu8f3i0k1#
您可以使用Pandas Groupby transform:
以下是
PE Ratio
列,并将其除以分组行业的平均值(按计算速度的顺序以三种不同的方式表示):8qgya5xd2#
首先,你不能迭代一个 Dataframe 。它根本没有优化,而且是对Pandas的DataFrame的误用。在我看来,创建一个包含平均值的新 Dataframe 是一个很好的方法。我认为你要写的行是:
我只是对
y.loc[df['Industry']].value
有一个疑问,也许你不需要.value
,也许你需要转换值,我没有测试。但精神是,你新的y
DataFrame就像一个dict
,包含每个行业的平均值。