Как преобразовать строку datetime-String с запятой (,) в миллисекундах в python / pandas? - PullRequest
1 голос
/ 14 апреля 2019

У меня возникла следующая проблема:

Столбцы даты и времени из моих данных получили следующий формат времени (столбцы «Дата» dd.mm.yyyy и «Время» hh:mm:ss.fff,f):

01.03.2019  12:29:15.732,7

Я оглянулся, но не смог найти опцию форматирования, которая касается части, которая стоит за запятой (после миллисекунд). Источник, который не помог мне: https://docs.python.org/2/library/datetime.html

Я читаю csv-файл с python3 и pd.read_csv().

У меня есть следующий обходной путь, который обрезает запятую и шифр за ней.

Это ужасно медленно из-за усечения более 50000 строк в моем наборе данных:

data = pd.read_csv('xyz.csv', sep=';', low_memory = False, parse_dates = [['Date', 'Time']], 
                   date_parser = lambda x, y : pd.to_datetime((x + ' ' + y)[:23], format='%d.%m.%Y %H:%M:%S.%f'))

Я хочу использовать форматирование строки, которое имеет дело с запятой, либо отбрасывая целую часть миллисекунды, либо путем ее правильного преобразования в микросекунды.

Sidenote: С R я просто использовал "%d.%m.%Y %H:%M:%S", который отбрасывал миллисекунды, не выдавая ошибку.

1 Ответ

0 голосов
/ 15 апреля 2019

ResidentSleeper правильно, вы можете использовать pd.to_datetime() и опустить запятую.

import pandas as pd

data1 = {'Date': ['01.03.2019  12:29:15.732,7',
                  '01.03.2019  12:29:15.732,7',
                  '01.03.2019  12:29:15.732,7',
                  '01.03.2019  12:29:15.732,7'], 
        'Value': [1, 2, 3, 4]}

df1 = pd.DataFrame(data1)

df1['Date'] = pd.to_datetime(df1['Date'].str.replace(',', ''))

print(df1)

                        Date  Value
0 2019-01-03 12:29:15.732700      1
1 2019-01-03 12:29:15.732700      2
2 2019-01-03 12:29:15.732700      3
3 2019-01-03 12:29:15.732700      4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...