Как вычислить значения для каждой строки (с уникальной функцией) при группировке кадра данных в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как вычислить значения для каждой строки (с уникальной функцией) при группировке кадра данных в Python?

Сообщение Anonymous »


У меня есть этот фрейм данных pandas:
df = pd.DataFrame( {"CALDT": ["1980-01-31", "1980-02-28", "1980-03-31", «31 января 1980 г.», «28 февраля 1980 г.», «31 марта 1980 г.», «31 января 1980 г.», «ИД»: [1, 1, 1, 2, 2, 2, 3], «Возврат»: [0,02, 0,05, 0,10, 0,05, -0,02, 0,03, -0,03] }) df['Год'] = pd.to_datetime(df['CALDT']).dt.year
Моя цель: если идентификатор был жив >= 2 месяца, для каждого идентификатора и года (группировки) на основе Return вычислить среднее значение и медиану, умноженную на 12, и присвоить это значение вернемся к строке.

Ожидаемый результат должен выглядеть следующим образом:

df_new = pd.DataFrame( {"CALDT": ["1980-01-31", "1980-02-28", "1980-03-31", «31 января 1980 г.», «28 февраля 1980 г.», «31 марта 1980 г.», «31 января 1980 г.», «Год»: [1980, 1980, 1980, 1980, 1980, 1980, 1980], «ИД»: [1, 1, 1, 2, 2, 2, 3], «Возврат»: [0,02, 0,05, 0,10, 0,05, -0,02, 0,03, 0,03], «Средняя_доходность»: [0,68, 0,68, 0,68, 0,24, 0,24, 0,24, нп.нан], «Median_Return»: [0,60, 0,60, 0,60, 0,36, 0,36, 0,36, нп.нан] }) В R это довольно просто, используя group_by из tidyverse:

df = df %>% mutate(Год = год(CALDT)) %>% group_by(CRSP_FUNDNO, Год) %>% mutate(months_alive = length(unique(CALDT))) %>% mutate(mean = case_when(months_alive >= 2 ~ среднее(Return)*3, .default = Н/П)) %>% mutate(медиана = case_when(months_alive >= 2 ~ среднее(Return)*12, .default = Н/П)) Любая помощь будет оценена по достоинству!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»