Замена панели Python - PullRequest
       0

Замена панели Python

0 голосов
/ 15 октября 2019

Python больше не использует панель. Я не достаточно квалифицирован, чтобы думать об альтернативе и надеюсь, что кто-то знает об обходном пути. Я использовал код ниже в течение некоторого времени, но после обновления он больше не работает. Я бы предпочел обновить код, а затем вернуться к более старым неподдерживаемым версиям. у меня проблема в том, что панель деактивирована. Можно ли обойти эту проблему? за то, что я пытаюсь сделать, это найти бета акции. Я взял код по следующей ссылке

Эффективный расчет бета-версии Python Pandas на многих таймфреймах

def roll(df, w):
 # stack df.values w-times shifted once at each stack
 roll_array = np.dstack([df.values[i:i+w, :] for i in range(len(df.index) - w + 1)]).T
 # roll_array is now a 3-D array and can be read into
 # a pandas panel object
 panel = pd.Panel(roll_array, 
                 items=df.index[w-1:],
                 major_axis=df.columns,
                 minor_axis=pd.Index(range(w), name='roll'))
 # convert to dataframe and pivot + groupby
 # is now ready for any action normally performed
 # on a groupby object
 return panel.to_frame().unstack().T.groupby(level=0)

rdf = roll(df, 156)

1 Ответ

0 голосов
/ 15 октября 2019

нашел ответ. думал, что я опубликую в случае, если кто-то нуждался в этом.

from numpy.lib.stride_tricks import as_strided as stride
import pandas as pd

def roll(df, w, **kwargs):
    v = df.values
    d0, d1 = v.shape
    s0, s1 = v.strides

    a = stride(v, (d0 - (w - 1), w, d1), (s0, s0, s1))

    rolled_df = pd.concat({
        row: pd.DataFrame(values, columns=df.columns)
        for row, values in zip(df.index, a)
    })

    return rolled_df.groupby(level=0, **kwargs)

roll(df, 2).mean()

ссылка для ответа я нашел.

ссылка для ответа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...