将Python熊猫行转换为R:

时间:2019-09-26 19:53:49

标签: python r pandas

我正在关注一个博客帖子here,关于从Python熊猫到R的翻译,我在一部分上有些停留。

在博客部分:

刻度线

作者所在行:

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一样吗?
  • \\-与R中的floor()相同吗?
  • 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熊猫行翻译成R语言吗?

1 个答案:

答案 0 :(得分:2)

通常,Pandas最好翻译成基数R:

  • reset_index与将row.names重置为连续编号data.frame(..., row.names = NULL)
  • 相同
  • assign(grpId =…)与在适当位置分配一列相同,例如使用transformwithin或dplyr的mutate

  • lambda row,这在assign内部是必需的,以引用数据框,这里别名为 row

  • row.index与行号相同(记住Python与R不同,它是0索引)

  • //是整数除法,在R中,除法后可以用as.integerfloor包装

总的来说,请考虑以下调整以翻译熊猫线:

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))