Pandas Groupby затем назначить - PullRequest
       1

Pandas Groupby затем назначить

0 голосов
/ 27 ноября 2018

У меня есть фрейм данных в длинном формате со столбцами: дата, тикер, mcap, rank_mcap.Столбцы mcap - это «marketcap» и измеряют, насколько велика определенная акция, а mcap_rank - это просто ранжированный ее вариант (где 1 - самая большая рыночная капитализация).

Я хочу создать 10 активов, взвешенных по рыночной капитализации (например, S & P10).В РИ делают это

df %>%
    filter(day(date) == 1, rank_mcap < 11) %>%
    group_by(date) %>%
    mutate(weight = mcap / sum(mcap)) %>%
    ungroup() %>%

Что мне делать в пандах?Я получаю следующую ошибку

AttributeError: Невозможно получить доступ к вызываемому атрибуту 'assign' объектов 'DataFrameGroupBy', попробуйте использовать метод apply

, когда я сделаю это дляаналогичный подход, как метод 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 и не пришел к выводу.

1 Ответ

0 голосов
/ 27 ноября 2018

Как панды достигают мутации в 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()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...