У меня есть данные цвета, даты и значений. Я хотел бы взять скользящее среднее значение за 2 дня (столбец с именем x), сгруппированный по цвету. Затем постройте каждую группу отдельной строкой.
Я понял, как это сделать, сгруппировав, а затем развернувшись. Он отлично работает для этого небольшого набора данных, но Pivot выдает ошибку ValueError: Unstacked DataFrame is too big, causing int32 overflow
на большом наборе данных, и, честно говоря, это кажется ненужным шагом, поэтому ищите альтернативный способ сделать это.
df = pd.DataFrame([['red', '2020-01-30', 0],
['red', '2020-01-31', 1],
['red', '2020-02-01', 2],
['blue', '2020-01-27', 3],
['blue', '2020-01-28', 4],
['blue', '2020-01-29', 5],
['blue', '2020-01-30', 6]],
columns=['color', 'date', 'x'])
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S')
df.set_index('date', inplace=True)
df = df.groupby('color')['x'].rolling('2D').mean().reset_index()
df = df.pivot(index='date', columns='color', values='x')
df.plot()
![enter image description here](https://i.stack.imgur.com/LGkxm.png)