如何在python/pandas中转换毫秒部分带有逗号(,)的datetime-String?

bq3bfh9z  于 11个月前  发布在  Python
关注(0)|答案(2)|浏览(83)

我遇到了以下问题:
我的数据中的日期-时间列获得了以下时间格式(列是“Date”dd.mm.yyyy和“Time”hh:mm:ss.fff,f):

01.03.2019  12:29:15.732,7

字符串
我环顾四周,但我找不到一个格式化选项,它处理逗号后面的部分(毫秒之后)。一个对我没有帮助的来源:https://docs.python.org/2/library/datetime.html
我正在用python3和pd.read_csv()阅读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'))


我想要的是使用字符串格式来处理逗号,要么放弃整个毫秒部分,要么将其正确转换为微秒。
注解:对于R,我只是使用了"%d.%m.%Y %H:%M:%S",它丢弃了毫秒而没有抛出错误。

xtupzzrd

xtupzzrd1#

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

字符串

gwo2fgha

gwo2fgha2#

如果一些日期格式的列有一个或多个逗号,您可以使用DataFrame.replace消除逗号,并将regex选项设置为True:

data = {'Date1': ['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'], 
              'Date2': ['01.04.2019  12:30:005.732,7',
                  '01.04.2019  12:31:15.732,7',
                  '01.04.2019  12:32:35.732,7',
                  '01.04.2019  12:33:45.732,7'], 
        Value': [1, 2, 3, 4]}

df1 = pd.DataFrame(data)

df1 = df1[['Date1','Date2']].replace(',', '', regex=True).applymap(pd.to_datetime)

print(df1)
                       Date1                      Date2
0 2019-01-03 12:29:15.732700 2019-01-04 12:30:05.732700
1 2019-01-03 12:29:15.732700 2019-01-04 12:31:15.732700
2 2019-01-03 12:29:15.732700 2019-01-04 12:32:35.732700
3 2019-01-03 12:29:15.732700 2019-01-04 12:33:45.732700

df1.dtypes
Date1    datetime64[ns]
Date2    datetime64[ns]

字符串

相关问题