我有一个长格式的数据框,其中包含列:日期,行情自动收录器,mcap,rank_mcap。 mcap列为“ marketcap”,用于衡量某只股票的大小,而mcap_rank只是该股票的排名版本(其中1是最大市值)。
我想创建市值加权前10名的资产(例如,S&P10)。在R中,我这样做
df %>%
filter(day(date) == 1, rank_mcap < 11) %>%
group_by(date) %>%
mutate(weight = mcap / sum(mcap)) %>%
ungroup() %>%
我在大熊猫里做什么?我收到以下错误
AttributeError:无法访问“ DataFrameGroupBy”对象的可调用属性“分配”,请尝试使用“应用”方法
当我尝试使用类似R方法的方法(即在python中)时:
df.\
query('included == True & date.dt.day == 1'). \
groupby('date').\
assign(w=df.mcap / df.mcap.sum())
我研究了http://pandas.pydata.org/pandas-docs/stable/comparison_with_r.html,但没有得出结论。
答案 0 :(得分:1)
大熊猫如何在R中实现突变
df.query('included == True & date.dt.day == 1').\
assign(weight = lambda x : x.groupby('date',group_keys=False).
apply(lambda y: y.mcap / y.mcap.sum()))
答案 1 :(得分:0)