Исправьте дату и время, используя Python - PullRequest
0 голосов
/ 30 мая 2018

У меня есть файл .csv с большим количеством дат и времени (около 3000 строк).И все строки имеют вид:

#Arrival_Date#  #Arrival_Time#  #Departure_Date#  #Departure_Time#    
2017/01/01      23:30           2017/01/01        00:30
2017/02/01      23:30           2017/02/01        23:40
2017/03/01      15:45           2017/03/01        17:30
2017/04/10      23:50           2017/04/10        00:30

Но моя проблема заключается в следующем: мне нужно исправить дату на Departure_Date (2017/01/02 и 2017/04/11).

IsЕсть ли способ сделать это автоматически?Мой профессор сказал мне использовать Python, но я понятия не имею, как.

Есть предложения о том, с чего мне начать?

1 Ответ

0 голосов
/ 30 мая 2018

Вы пытаетесь добавить день к дате отъезда, если вылет до прибытия.Для этого вам нужно использовать библиотеку Python datetime.Начните с объединения компонентов даты и времени в одну строку, а затем преобразуйте строку в объект datetime.Затем вы можете сделать простое сравнение, чтобы определить, предшествует ли одна дата другой.Если это так, используйте timedelta в день до даты отъезда.Затем преобразуйте это обратно в строку даты и обновите третий столбец (то есть row[2]).Затем обновленные данные могут быть записаны обратно в отдельный файл CSV:

from datetime import datetime, timedelta
import csv

one_day = timedelta(days=1)

with open('times.csv', newline='') as f_input, open('times_updated.csv', 'w', newline='') as f_output:
    csv_input = csv.reader(f_input)
    csv_output = csv.writer(f_output)
    header = next(csv_input)
    csv_output.writerow(header)

    for row in csv_input:
        arrival_time = datetime.strptime('{} {}'.format(row[0], row[1]), '%Y/%m/%d %H:%M')
        departure_time = datetime.strptime('{} {}'.format(row[2], row[3]), '%Y/%m/%d %H:%M')

        if departure_time < arrival_time:
            departure_time += one_day
            row[2] = departure_time.strftime('%Y/%m/%d')

        csv_output.writerow(row)

Это даст вам выходной файл CSV, содержащий:

#Arrival_Date#,#Arrival_Time#,#Departure_Date#,#Departure_Time#
2017/01/01,23:30,2017/01/02,00:30
2017/02/01,23:30,2017/02/01,23:40
2017/03/01,15:45,2017/03/01,17:30
2017/04/10,23:50,2017/04/11,00:30

Обратите внимание, это предполагает, что вы используете Python3.x и что ваши CSV-файлы отформатированы как обычные CSV-файлы, например aaa,bbb,ccc,ddd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...