首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >熊猫数据帧的年度加权平均值

熊猫数据帧的年度加权平均值
EN

Stack Overflow用户
提问于 2018-06-07 07:27:51
回答 1查看 234关注 0票数 0

这里是中级/初级Python用户。我需要弄清楚如何根据我解析成数据帧的一些股票市场数据来计算年度权重和加权平均值。

我有一些2003-2018年的股票市值和日期,它是这样给出的(比这段代码显示的值多得多):

代码语言:javascript
复制
ticker  date    marketcap       open    high    low     close
A   2003-03-31  8466487038.0    13.38   13.47   13.0    13.15
A   2003-06-30  11273789220.5   19.5    19.76   19.46   19.55
AA  2017-03-31  6031414196.0    34.06   34.74   33.6    34.4
AA  2017-06-30  6426297428.0    33.16   33.45   32.535  32.65
ICE 2016-03-31  29363680289.5   46.396  47.184  46.242  47.028
ICE 2016-06-30  31796255816.0   50.602  51.349  50.321  51.192

我只是想为每个股票行情的市值计算一个年度权重。

即:

代码语言:javascript
复制
Weight(YEAR) = AVGTickerMarketCap(YEAR) / AllTickersMarketCap(YEAR)

由于市值每年都有多个值,因此我需要取2003、2004年的平均第一个市值,每个股票代码的2005...etc -因此是AVGTickerMarketCap(年份)。

我只知道如何计算AllTickersMarketCap(YEAR):

代码语言:javascript
复制
df1['date'] = pd.to_datetime(df1.date)
avg_all = df1.groupby(df1.date.dt.year['marketcap'].transform('mean')

但这似乎只是第一个报价器"A“,并且将"A”的相同含义应用于每年,而不管它们的报价器是什么。

问题出在哪里?我该如何去寻找AVGTickerMarketCap(年份)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 07:57:26

获取包含年平均值的列的正确语法为

代码语言:javascript
复制
avg_all = df1['marketcap'].groupby(df1.date.dt.year).transform('mean')

同样,要获得每年的平均值和报价器,您可以运行以下命令:

代码语言:javascript
复制
avg_all = df1['marketcap'].groupby([df1.date.dt.year,df1.ticker]).transform('mean')

如果您不希望它是一个可以映射回数据框架的列,而只是想要一个新的数据框架,那么您可以用.mean()替换.transform('mean')

在您的示例数据中,每个滚动条都有一个唯一的年份,该年对于该滚动条的所有值都是相同的,而与所有其他滚动条值不同,因此按年分组和按年分组和滚动条是等价的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50731006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档