Хеширование pandas кадра данных для вычисленного кэширования столбца - PullRequest
0 голосов
/ 13 февраля 2020

Я создаю собственный класс, расширяя фрейм данных pandas, как показано ниже. Я создаю свойство derived, выполняя некоторые операции с базовыми столбцами.

import numpy as np
import pandas as pd

class myclass:
    def __init__(self, *args, **kwargs):
        self.df = pd.DataFrame(*args, **kwargs)
    @property
    def derived(self):
        return self.df.sum(axis=1)

myobj = myclass(np.random.randint(100, size=(100,6)))
d = mc.derived

Вычисление derived является дорогостоящим шагом, и поэтому я хотел бы кэшировать эту функцию. Я хочу использовать functools.lru_cache для того же. Однако требуется, чтобы исходный объект был хеширован. Я попытался создать функцию __hash__ для объекта, как подробно описано в этом ответе { ссылка }.

Теперь я сталкиваюсь с новой проблемой, когда функция хеширования является дорогостоящим шагом !. Есть ли способ обойти эту проблему? Или я зашел в тупик?

Есть ли лучший способ проверить, был ли изменен фрейм данных, и если нет, продолжайте возвращать тот же самый ха sh?

...