Распределить значения для дней месяца по таблице
Использую df - https://wdho.ru/ifgG . Каким образом можно перевести датафрейм df в новый, в котором заголовки столбцов будут значениями из 'Day' (от 1 до 31 го хотя непосредственно в столбце они повторяются много раз), а заполнены строки будут из 'Difference'. Ну например - есть Day 7 - тоесть каждый 7й день. Значит строки будут 'Date' будут содержать год и месяц (например 2019.05) и 7му дню будет соответсвовать значение из 'Difference'. Затем на дату скажем 2019.05 - след значение из 'Difference'. И так в столбец будет заполненем весь 7й день. За ним также 8й и т.д.
Date Difference Day
38 2015.03.03 2.550049 3
39 2015.03.04 -17.229981 4
40 2015.03.05 -6.679932 5
41 2015.03.06 -27.280029 6
42 2015.03.09 -21.47998 9
43 2015.03.10 -28.089966 10
44 2015.03.11 -35.899903 11
45 2015.03.12 21.26001 12
46 2015.03.13 12.299926 13
47 2015.03.16 16.629882 16
48 2015.03.17 18.929931 17
49 2015.03.18 18.909912 18
50 2015.03.19 16.429932 19
51 2015.03.20 9.410157 20
52 2015.03.23 14.099854 23
Результат:
... 3 4 ...
...
2015.08 -5 8
2015.09 11 10
2015.10 2 -9
...
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Если я правильно понял вопрос, то можно попробовать сделать так:
df["Date"] = pd.to_datetime(df["Date"])
res = pd.pivot(df, index="Date", columns="Day", values="Difference").groupby(pd.Grouper(freq="M")).first()
res.index = res.index.to_period('M')
тогда res будет:
Day 1 2 3 ... 29 30 31
Date ...
2015-01 NaN NaN NaN ... -11.089966 -7.459961 NaN
2015-02 NaN 1.500000 53.359985 ... NaN NaN NaN
2015-03 NaN 6.510010 2.550049 ... NaN 30.459961 3.779786
2015-04 -24.360108 -0.669922 NaN ... -1.500000 -26.979980 NaN
2015-05 2.770019 NaN NaN ... -14.880127 NaN NaN
...
2020-06 30.560058 42.040039 58.090088 ... -19.959961 81.699951 NaN
2020-07 65.660156 24.090088 NaN ... 24.169921 19.000000 39.360107
2020-08 NaN NaN 24.160156 ... NaN NaN 5.620118
2020-09 16.919922 73.400147 -88.699951 ... 1.570069 12.080078 NaN
2020-10 39.590088 -37.450195 NaN ... NaN NaN NaN