Я использую DataFrame
вместо обычной dict
для производительности, так как они используют numpy
массивы внутри.Однако доступ к ячейке, похоже, оказывает ужасное влияние на производительность.
Мой DataFrame
выглядит следующим образом:
df = pd.DataFrame(columns=models1, index=models2).fillna(STATE1).stack()
Типы столбцов моделей - это подклассы Django models.Model
и STATE1
и все остальные состояния являются просто целыми числами.
Мне часто нужно проверять, если df[m1, m2] == state_n
, но, по-видимому, просто доступ к ячейке df[m1, m2]
занимает много времени: когда я запускаю все, где это утверждениеиспользуется общее время выполнения составляет 0,15 секунды, но когда этот оператор включен, это занимает 0,25 секунды.Это значительное увеличение для операции, которая должна быть O(1)
, и оператор выполняется только 9216 раз.
Что здесь происходит?Как я могу оптимизировать его производительность?