Как отформатировать дату в этом формате в ггггммдд

#python #pandas

Вопрос:

 dat = df['Date'].tolist()
 
 ['Sun 11  - Thu 15 Apr 2021      u2002Online Edition Available',
 'Tue 27  - Thu 29 Apr 2021',
 'Fri 14  - Sat 15 May 2021',
 'Mon 24  - Thu 27 May 2021',
 'Tue 13  - Sat 17 Apr 2021',
 'Fri 23  - Sun 25 Apr 2021',
 'Sun 13  - Tue 15 Jun 2021',
 'Wed 07  - Sun 18 Apr 2021']
 

Хотите разделить этот вывод на start_date и end_date в формате yyyymmdd

Комментарии:

1. Можем ли мы предположить, что «Онлайн-издание не доступно»?

2. На самом деле нам тоже нужно избавиться от этого.

Ответ №1:

Вот решение, предполагающее, что каждое start_date и end_date происходит в один и тот же месяц, и форматирование всегда одно и то же. Вы можете адаптировать его в случае изменения форматирования.

 import datetime
import pandas as pd

start_date_list = list()
end_date_list = list()
for index, row in data_df.iterrows():
    date_list = row['Date'].split(' - ')
    end_date = datetime.datetime.strptime(date_list[1], '%a %d %b %Y')
    start_date = datetime.date(end_date.year, end_date.month, int(date_list[0].split(' ')[1]))

    start_date_list.append(start_date.strftime('%Y%m%d'))
    end_date_list.append(end_date.strftime('%Y%m%d'))

data_df['start_date'] = start_date_list
data_df['end_date'] = end_date_list