Я работаю с фреймом данных, в котором есть столбец даты, и мне нужно находить последнюю рабочую дату каждого месяца, код, который я использовал, работает, но не имеет смысла, как он работал
Во фрейме данных «яблоко» изначально было 6 столбцов, но меня больше всего интересует столбец «Дата», даты которого варьируются от 2014-1980 годов каждого месяца.
Пример данных:
Date Open High Low Close Volume Adj Close
0 2014-07-08 96.27 96.80 93.92 95.35 65130000 95.35
1 2014-07-07 94.14 95.99 94.10 95.97 56305400 95.97
2 2014-07-03 93.67 94.10 93.20 94.03 22891800 94.03
3 2014-07-02 93.87 94.06 93.09 93.48 28420900 93.48
4 2014-07-01 93.52 94.07 93.13 93.52 38170200 93.52
from pandas.tseries.offsets import MonthEnd
apple['Last_Day']=pd.to_datetime(apple['Date'],format="%Y-%m")+MonthEnd(0)
banana=apple.loc[-apple.Last_Day.duplicated()]
Я ожидал, что у недавно созданного столбца «Last_Day» будет последний день каждого месяца, который я получил, но удивительно, что столбец «Date» получил последний рабочий день каждого месяца, который я не понял, потому что я ничего не инициализировал на «Дата», так как все значения в «Дата» заменяются на последний рабочий день,
Выход:
Date Open High Low Close Volume Adj Close Last_Day
0 2014-07-08 96.27 96.80 93.92 95.35 65130000 95.35 2014-07-31
5 2014-06-30 92.10 93.73 92.09 92.93 49482300 92.93 2014-06-30
26 2014-05-30 637.98 644.17 628.90 633.00 141005200 90.43 2014-05-31
47 2014-04-30 592.64 599.43 589.80 590.09 114160200 83.83 2014-04-30
68 2014-03-31 539.23 540.81 535.93 536.74 42167300 76.25 2014-03-31
89 2014-02-28 529.08 532.75 522.12 526.24 92992200 74.76 2014-02-28
108 2014-01-31 495.18 501.53 493.55 500.60 116199300 70.69 2014-01-31