Перевод строки Python Pandas в R: - PullRequest
0 голосов
/ 26 сентября 2019

Я слежу за сообщением в блоге здесь , и я немного застрял в одной части относительно перевода с Python pandas на R…

В части блога:

Tick Bars

У автора есть строка:

data_tick_grp = data.reset_index().assign(grpId=lambda row: row.index // num_ticks_per_bar)

  • Я понимаю, что data - это "фрейм данных" -
  • reset_index не уверен, что это такое.
  • assing(grpId =…) - создание новой переменной grpId
  • lambda row: - не уверен, что это делает.
  • row.index - это то же самое, что row_number?
  • \\ - это то же самое, что floor() в R?
  • num_ticks_per_bar эторассчитывается как.

    total_ticks = len(data) num_ticks_per_bar = total_ticks / num_time_bars num_ticks_per_bar = round(num_ticks_per_bar, -3) # round to the nearest thousand

Что я понимаю под этим:

ticks <- data %>%
  filter(symbol == "XBTUSD") %>%
  nrow()
ticks_per_bar <- ticks / 288
ticks_per_bar <- plyr::round_any(ticks_per_bar, 1000)
floor(1:nrow(data) / ticks_per_bar))

Может кто-нибудь помочь мне перевести строку Python pandas в Rязык

1 Ответ

2 голосов
/ 27 сентября 2019

Обычно Панды лучше всего переводить на базовую R:

  • reset_index то же, что и сброс row.names для последовательной нумерации data.frame(..., row.names = NULL)
  • assign(grpId =…) так же, какназначение столбца на месте, например, с помощью transform, within или dplyr mutate

  • lambda row это требуется внутри assign для ссылочного фрейма данных, здесь псевдоним строка

  • row.index совпадает с номером строки (помните, что Python 0-index в отличие от R)

  • // - целочисленное деление, которое в R можно обернуть as.integer или floor после деления

В целом, рассмотрите приведенную ниже настройку для перевода строки Панд:

data_tick_grp = (data.reset_index()
                     .assign(grpId=lambda row: row.index // num_ticks_per_bar)
                )

К R:

data_tick_grp <- transform(data.frame(data, row.names = NULL),
                           grpId = floor(0:(nrow(data)-1) / num_ticks_per_bar))

Или в формате:

data_tick_grp <- data %>%
                   data.frame(row.names = NULL) %>%
                   mutate(grpId = floor(0:(nrow(data)-1) / num_ticks_per_bar))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...