vaex: сдвиг столбца на n шагов - PullRequest
0 голосов
/ 02 апреля 2020

Я готовлю большой многомерный набор данных временных рядов для контролируемой учебной задачи и хотел бы создать сдвинутые во времени версии своих входных функций, чтобы моя модель также делала выводы из прошлых значений. В pandas есть команда shift(n), которая позволяет сдвигать столбец на n строки. Есть ли что-то подобное в vaex?

Я не смог найти ничего похожего в документации vaex.

1 Ответ

1 голос
/ 07 апреля 2020

Нет, мы пока не поддерживаем это (https://github.com/vaexio/vaex/issues/660). Поскольку vaex является расширяемым (см. http://docs.vaex.io/en/latest/tutorial.html#Adding -DataFrame-accessors ), я подумал, что дам вам решение в виде этого:

import vaex
import numpy as np

@vaex.register_dataframe_accessor('mytool', override=True)
class mytool:
    def __init__(self, df):
        self.df = df

    def shift(self, column, n, inplace=False):
        # make a copy without column
        df = self.df.copy().drop(column)
        # make a copy with just the colum
        df_column = self.df[[column]]
        # slice off the head and tail
        df_head = df_column[-n:]
        df_tail = df_column[:-n]
        # stitch them together
        df_shifted = df_head.concat(df_tail)
        # and join (based on row number)
        return df.join(df_shifted, inplace=inplace)

x = np.arange(10)
y = x**2
df = vaex.from_arrays(x=x, y=y)
df['shifted_y'] = df.y
df2 = df.mytool.shift('shifted_y', 2)
df2

Он генерирует дейтаграмму из одного столбца, нарезает, объединяет и присоединяет его обратно. Все без единой копии памяти.

Я предполагаю здесь циклический c сдвиг / поворот.

...