чтение дат с использованием python read_csv с разделителем / или — и годами меньше 1968

#python #csv #date

#python #csv #Дата

Вопрос:

У меня есть два вопроса относительно дат чтения с использованием read_csv в python

  1. Как читать даты, имеющие смешанный формат? Даты представлены в форме дд / мм / гг, дд-мм-гг, дд / мм / гггг или дд-мм-гггг
  2. есть некоторые даты в годах, меньшие или равные 1968 году. Как сохранить информацию о столетии, чтобы можно было корректно сравнивать даты.
 df = pd.read_csv('train.csv',dayfirst=True,parse_dates=['DoB','DisDt'])
 

Я также пробовал использовать date_parser

 dtpse = lambda x:pd.datetime.strptime(x,'%d/%m/%y')
df = pd.read_csv('train.csv',dayfirst=True,parse_dates=['DoB','DisDt'],date_parser=dtpse)
 

Даты приведены в форме, приведенной ниже в файле csv

 01/01/2008
01/01/74
12-04-2004
12-04-1968
01/06/1978
 

Я пытаюсь использовать python read_csv для получения результатов, показанных ниже

Ожидаемые результаты

 01-01-2008
01-01-74
12-04-2004
12-04-1968
01-06-1978
 

Основная цель — сохранить информацию о столетии, чтобы при вычитании дат вычислялась правильная разница .

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

1. Вы просто хотите заменить знаки, потому что тогда вы могли бы использовать функцию замены: date.replace(«/», «-«)

2. В противном случае вы можете отсортировать его, затем вы можете разделить его и добавить 19 к каждой дате, которая имеет только 2 цифры

3. @SeanSdahl Основная цель — найти разницу между этими двумя датами

4. Две даты? или все они попарно?

5. @SeanSdahl У меня есть два столбца даты в моем имени dateframe ‘DOB’ и ‘DisDt’. мне нужно найти разницу между этими двумя датами для всех строк в фрейме даты

Ответ №1:

Попробуйте этот код:

 with open ("file.csv", "r", newline='') as file:
    dates = []    
    for line in file:
        line.replace("/","-")
        dates.append(line)
 

Затем вы должны получить список элементов, которые все разделены символом «-»