ValueError с win_type 'bohman' в функции прокрутки pandas после обновления до Python 3.11Python

Программы на Python
Anonymous
ValueError с win_type 'bohman' в функции прокрутки pandas после обновления до Python 3.11

Сообщение Anonymous »

Я столкнулся с проблемой с библиотекой pandas в Python после обновления с Python 3.8 до Python 3.11 при использовании той же версии pandas (1.5.3). Когда я пытаюсь использовать метод «прокрутки» с типом окна «bohman», это приводит к ошибке ValueError. Проблемный код выглядит следующим образом:

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

p_spp_mean = p_spp_in.rolling(
window, closed='left', center=True, win_type=self._smoothing_method
).mean()

self._smoothing_method = par.get('smoothing_method', 'bohman')

Я получаю сообщение об ошибке:

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

raise ValueError(f"Invalid win_type {self.win_type}")
ValueError: Invalid win_type bohman
Я протестировал функцию прокрутки с другим типом окна «гауссовым» на простом DataFrame в блокноте Jupyter, и она сработала как ожидалось:

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

import pandas as pd
import numpy as np

# Create a simple DataFrame
data = {
'date': pd.date_range(start='2023-01-01', periods=10, freq='D'),
'values': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
}
df = pd.DataFrame(data)

# Apply a Gaussian rolling window to the 'values' column
df['gaussian_rolling_sum'] = df['values'].rolling(window=2, win_type='gaussian').sum(std=3)

print(df)
Однако использование «bohman» в качестве типа окна теперь требует обходного пути, включающего применение окна вручную с помощью scipy.signal:

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

import pandas as pd
import numpy as np
from scipy import signal

# Create a simple DataFrame
data = {
'date': pd.date_range(start='2023-01-01', periods=10, freq='D'),
'values': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
}
df = pd.DataFrame(data)

# Function to apply the Bohman window
def bohman_window(x):
window = signal.get_window('bohman', len(x))
return np.sum(window * x) / np.sum(window)

# Apply a Bohman rolling window to the 'values' column
df['bohman_rolling_sum'] = df['values'].rolling(window=3).apply(bohman_window)
Я ожидал, что win_type 'bohman' будет работать так же, как в Python 3.8, без необходимости использования дополнительных библиотек или ручной реализации. Я не знаю, почему возникает эта ошибка и как правильно адаптировать мой код.
Кто-нибудь сталкивался с подобными проблемами с типами окон в pandas при обновлении версий Python? Как устранить ошибку «Неверный win_type», не прибегая к ручной реализации стандартных типов окон, таких как «bohman»? Есть ли лучший подход к устранению этой несовместимости между версиями Python и pandas?

Подробнее здесь: https://stackoverflow.com/questions/788 ... grading-to

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