Проблема с последовательностью столбца даты и времени в Python - PullRequest
0 голосов
/ 08 февраля 2019

После объединения многих файлов в один большой файл последовательность столбца даты и времени не соответствовала исходным файлам.

У меня есть много CSV-файлов метеорологических данных.Однажды один файл.Интервал 5 минут.Оригинальные файлы используют этот формат даты и времени: 24.03.2016 18:35.

Я объединил все файлы, используя:

    globbed_files = glob.glob(path + "\*Raw2*.csv")
    data = []

    for csv in globbed_files:
       df = pd.read_csv(csv, encoding = "ISO-8859-1", header = 0, 
       low_memory=False)
       data.append(df) 

    combined = pd.concat(data, ignore_index=True, sort=True)
    combined['DateTime'] = pd.to_datetime(combined['DateTime'])
    combined.set_index('DateTime', inplace=True)
    combined.index = combined.index.map(lambda t: t.strftime('%d/%m/%Y %H:%M:%S'))

    combined.to_csv(path + "\year1.txt", sep='\t', header=True, index=True)

Результатом было три файла.Каждый файл содержит данные за определенный год.Я проверил правильность последовательности datetime для всех файлов в соответствии с исходными файлами.

Поскольку я не знаю, как преобразовать исходный формат datetime в формат DateTime, понятный Python, я сделал это вручную.Я скопировал столбец даты и времени в Блокнот, добавил второй (: 00), удалил ненужные интервалы, заменил все '.'с помощью '/' anf окончательно скопировал его обратно в csv.Чтобы убедиться, что в csv я снова использую встроенный формат даты ecxel для столбца datetime.Новый формат даты и времени: 24.03.2016 18:35:00.

Затем, с новым форматом даты и времени, я объединил «годовой файл» в окончательный большой файл.

Но что случилось?Python считывает несоответствие даты и времени путем обмена датой и месяцем.Итак, 03.08.2016 18:35:00 может быть неверно прочитано как месяц 8 и день 3 или правильно как день 8 месяц 3. Теперь мой новый файл не отсортирован по исходному файлу.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 февраля 2019

Решение должно быть упрощено для добавленных параметров к read_csv, последний индекс преобразования в пользовательский формат равен DatetimeIndex.strftime:

globbed_files = glob.glob(path + "\*Raw2*.csv")
data = []

for csv in globbed_files:
   df = pd.read_csv(csv, 
                    encoding = "ISO-8859-1", 
                    header = 0, 
                    low_memory=False,
                    parse_dates=['DateTime'], #convert column to datetimes
                    dayfirst=True,  #avoid inconsistency  for specify first value is day
                    index_col=['DateTime'] #create DatetimeIndex
                    )
   data.append(df) 

combined = pd.concat(data, sort=True)

combined.index = combined.index.strftime.strftime('%d/%m/%Y %H:%M:%S')

combined.to_csv(path + "\year1.txt", sep='\t', header=True, index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...