У меня есть большой набор рыночных данных за 1993–2024 годы.
Так как календарные дни не совпадают с торговыми днями. Это может быть реализовано по «рабочим дням», но кто знает, совпадают ли праздничные/рабочие дни с торговыми днями. Мне нужно получить торговый день месяца, если соблюдены определенные условия.
Код: Выделить всё
Day Open High Low Close Volume trading_day
Date
2010-01-04 Monday 112.370003 113.389999 111.510002 113.330002 118944600 1
2010-01-05 Tuesday 113.260002 113.680000 112.849998 113.629997 111579900 2
2010-01-06 Wednesday 113.519997 113.989998 113.430000 113.709999 116074400 3
2010-01-07 Thursday 113.500000 114.330002 113.180000 114.190002 131091100 4
2010-01-08 Friday 113.889999 114.620003 113.660004 114.570000 126402800 5
2010-01-11 Monday 115.080002 115.129997 114.239998 114.730003 106375700 6
2010-01-12 Tuesday 113.970001 114.209999 113.220001 113.660004 163333500 7
2010-01-13 Wednesday 113.949997 114.940002 113.370003 114.620003 161822000 8
2010-01-14 Thursday 114.489998 115.139999 114.419998 114.930000 115718800 9
2010-01-15 Friday 114.730003 114.839996 113.199997 113.639999 212283100 10
2010-01-19 Tuesday 113.620003 115.129997 113.589996 115.059998 139172700 11
2010-01-20 Wednesday 114.279999 114.449997 112.980003 113.889999 216490200 12
2010-01-21 Thursday 113.919998 114.269997 111.559998 111.699997 344859600 13
2010-01-22 Friday 111.199997 111.739998 109.089996 109.209999 345942400 14
2010-01-25 Monday 110.209999 110.410004 109.410004 109.769997 186937500 15
2010-01-26 Tuesday 109.339996 110.470001 109.040001 109.309998 211168800 16
2010-01-27 Wednesday 109.169998 110.080002 108.330002 109.830002 271863600 17
2010-01-28 Thursday 110.190002 110.250000 107.910004 108.570000 316104000 18
2010-01-29 Friday 109.040001 109.800003 107.220001 107.389999 310677600 19
Код: Выделить всё
df_test['trading_day'] = range(1, len(df_test) + 1)
Я справился в df.groupby по месяцам с помощью следующего кода:
Код: Выделить всё
df_grouped_monthly = df.groupby(pd.Grouper(freq='M'))
Возможные решения: либо получить сгруппированную позицию строки - понятия не имею, наследуется ли номер строки от исходного df, или он подсчитывается на основе в groupby.
Или добавьте указанный выше счетчик в сгруппированный df. Мне не удалось добавить дополнительный столбец в сгруппированный df.
Любые предложения, как добиться вышеописанного с помощью df для всего набора данных на ежемесячной основе.
Подробнее здесь: https://stackoverflow.com/questions/790 ... thly-basis