today = pd.to_datetime('today').strftime("%d/%m/%Y")
last = (pd.to_datetime(today) - pd.DateOffset(years=1)).strftime("%d/%m/%Y")
listofmonths = pd.date_range(start=last, end=today, freq='MS')
listofmonths
Result / Output:
DatetimeIndex(['2021-06-01', '2021-07-01', '2021-08-01', '2021-09-01',
'2021-10-01', '2021-11-01', '2021-12-01', '2022-01-01',
'2022-02-01', '2022-03-01', '2022-04-01', '2022-05-01'],
dtype='datetime64[ns]', freq='MS')
Вопрос:
Вот у меня первое число месяца, но вместе с первым свиданием я хочу последнее число месяца также. Итак, как это будет возможно. Какое изменение я должен сделать, чтобы получить последнюю дату месяца?
Да, я подумал, что вам понравится и то, и другое, посмотрите мой ответ, если он решит вашу проблему!
один список будет в порядке, но я хочу, чтобы первая и последняя даты были в одном кортеже, так как это сделать? скажем ('2021-06-30', '2021-07-31') , ('2021-08-31', '2021-09-30'),... я хочу так
Но это все последние даты, нет? Вы имели в виду (2021-06-01, 2021-06-30), (2021-07-01, 2021-07-31) ? Или действительно ('2021-06-30', '2021-07-31')?
я хочу, чтобы обе даты были только в строке («2021-06-30», «2021-07-31») и в одном кортеже. И какие изменения я должен внести в существующий код?
Я отредактировал свой ответ, добавил пример в конце. Проверьте, это то, что вам нужно






Чтобы получить конец месяцев, вы можете сделать:
from pandas.tseries.offsets import MonthEnd
month_ends = listofmonths + MonthEnd(1)
print(month_ends)
DatetimeIndex(['2021-06-30', '2021-07-31', '2021-08-31', '2021-09-30',
'2021-10-31', '2021-11-30', '2021-12-31', '2022-01-31',
'2022-02-28', '2022-03-31', '2022-04-30', '2022-05-31'],
dtype='datetime64[ns]', freq=None)
Если вам нужен один индекс:
joined_index = listofmonths.union(month_ends)
print(joined_index)
DatetimeIndex(['2021-06-01', '2021-06-30', '2021-07-01', '2021-07-31',
'2021-08-01', '2021-08-31', '2021-09-01', '2021-09-30',
'2021-10-01', '2021-10-31', '2021-11-01', '2021-11-30',
'2021-12-01', '2021-12-31', '2022-01-01', '2022-01-31',
'2022-02-01', '2022-02-28', '2022-03-01', '2022-03-31',
'2022-04-01', '2022-04-30', '2022-05-01', '2022-05-31'],
dtype='datetime64[ns]', freq=None)
Чтобы получить строковые кортежи, вы можете сделать:
month_tuples = list(zip(listofmonths.astype(str), month_ends.astype(str)))
print(month_tuples)
[('2021-06-01', '2021-06-30'), ('2021-07-01', '2021-07-31'),
('2021-08-01', '2021-08-31'), ('2021-09-01', '2021-09-30'),
('2021-10-01', '2021-10-31'), ('2021-11-01', '2021-11-30'),
('2021-12-01', '2021-12-31'), ('2022-01-01', '2022-01-31'),
('2022-02-01', '2022-02-28'), ('2022-03-01', '2022-03-31'),
('2022-04-01', '2022-04-30'), ('2022-05-01', '2022-05-31')]
я хочу, чтобы каждый месяц была первая и последняя дата в одном кортеже, «month_ends_tuples» показывает только последнюю дату месяца. Итак, можем ли мы сделать так, чтобы он отображал первую и последнюю дату каждого отдельного месяца в отдельных кортежах?
@VedantRawal нравится это? Смотрите мою правку.
Я хочу использовать оба варианта, если вы поможете в обоих случаях, мне будет легко понять оба варианта. в основном это должен быть отдельный индекс [0] для первой даты и [1] для последней даты месяца