Прокручивающееся окно pandas применяет функцию к фрагменту кадра данных?Python

Программы на Python
Anonymous
Прокручивающееся окно pandas применяет функцию к фрагменту кадра данных?

Сообщение Anonymous »

Без индексации и циклов for/ while я хотел бы применить функцию к скользящему окну в моем фрейме данных, которая возвращает строку, которая станет новым фреймом данных (или дополнительными столбцами в моем предыдущем). Лучший метод, который я нашел на данный момент, приведен ниже:

Код: Выделить всё

import numpy as np
import pandas as pd

def foo(window):
print(window, "\n-------\n")
return np.array([[1,2,3]])

df = pd.DataFrame({"A": range(10), "B": range(10, 20), "C": range(20, 30)})

df[["D", "F", "G"]] = df.rolling(window=2, method="table").apply(foo,engine="numba",  raw=True)

print(df)
Проблемы для меня следующие:
  • Он работает только с необработанным вариантом (т. е. с моим функция получает numpy.ndarray, а не фрейм данных), поэтому я не могу ссылаться на столбцы по их имени в операциях применяемой функции.
  • Возвращаемое значение должно быть иметь такое же количество столбцов, что и входные данные, хотя мне может потребоваться гораздо больше входных столбцов, чем выходных.
Существует ли для этого метод по умолчанию ? Я знаю, что можно использовать цикл while, но это будет очень грязно в моей кодовой базе и, вероятно, менее эффективно.

Подробнее здесь: https://stackoverflow.com/questions/779 ... rame-slice

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