Распределить значения для дней месяца по таблице

Использую 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

→ Ссылка