【发布时间】:2018-11-16 18:22:18
【问题描述】:
这里是中级/初级 Python 用户。我需要弄清楚如何根据我解析成数据框的一些股市数据来计算年度权重和加权平均值。
我有 2003-2018 年某个区间的股票市场价值和日期,是这样给出的(比这个 sn-p 显示的价值要多得多):
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
我只是想为每个股票代码的市值计算一个年权重。
即:
Weight(YEAR) = AVGTickerMarketCap(YEAR) / AllTickersMarketCap(YEAR)
由于每年的市值有多个值,我需要为每个股票取 2003、2004、2005 年等的平均市值的第一个值 - 因此是 AVGTickerMarketCap(YEAR)。
我只能弄清楚如何计算 AllTickersMarketCap(YEAR):
df1['date'] = pd.to_datetime(df1.date)
avg_all = df1.groupby(df1.date.dt.year['marketcap'].transform('mean')
但这似乎只采用第一个股票代码“A”,并将“A”的相同平均值应用于每年,无论他们的股票代码如何。
问题出在哪里,我该如何寻找 AVGTickerMarketCap(YEAR)?
【问题讨论】:
标签: python pandas date dataframe statistics