Я создаю собственный класс, расширяя фрейм данных 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?