Выполните расчет pandas на сетке R dataframe - PullRequest
0 голосов
/ 26 мая 2020

У меня есть фрейм данных в R, который выглядит следующим образом:

library(tidyverse) 

df_input_r <- data.frame(
                  id = c(7181, 7183, 7183, 7183, 7185, 7185, 7185, 7191, 7191),
                date = c("2020-01-01", "2020-01-01", "2020-01-02", "2020-01-03",
                         "2020-01-01", "2020-01-02", "2020-01-03",
                         "2020-01-01", "2020-01-02"),
                rank = c(1, 1, 2, 3, 1, 2, 3, 1, 2)
        )

Я хотел бы выполнить простую операцию в pandas: я хотел бы сгруппировать по id и отфильтровать только второй -последняя запись для каждого идентификатора; Я хочу отфильтровать и сохранить все столбцы, а результат будет следующим:

df_output <- data.frame(stringsAsFactors=FALSE,
                              id = c(7181, 7183, 7185, 7191),
                        date_mod = c("-", "2020-01-02", "2020-01-02", "2020-01-01"),
                        rank_mod = c(0, 2, 2, 1)
                    )

    id   date_mod rank_mod
1 7181          -        0
2 7183 2020-01-02        2
3 7185 2020-01-02        2
4 7191 2020-01-01        1

Я хотел бы открыть этот фрейм данных R в pandas через reticulate, выполнить операцию в pandas и вернуть выходной кадр данных в r.

Код в pandas, который я написал:

grouped = df.groupby('user_id')
index_tokeep = dict(grouped['rank'].nlargest(2).index.tolist())
df.loc[index_tokeep.values(),:]

Спасибо за помощь

...