如何使用Python将混乱的日期时间格式转换为YYYY-MM-DD HH:MM:SS格式?

2024-09-29 04:24:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到的日期和时间格式如下

2019-1-31.23.54. 53. 207000000 
2019-1-31.23.51. 27. 111000000

我需要用python转换如下

2019-01-31 23:54:53
2019-01-31 23:51:27

如何才能达到预期的效果。你知道吗

我试图通过将上面的文本转换为csv来删除最后一个微秒值。然后删除包含微秒的最后一列。 但无法转换“2019-1-31.23.54”部分。 试过的代码

df = pd.read_csv('file:///C:/prod/orderip.txt',sep='\s+',header=None)
df.columns = [ 'DateTime', 'Extra1','Extra2']
df.to_csv('C:/prod/data_out2.csv',index=False)
df = df.drop('Extra1', 1)
df = df.drop('Extra2', 1)

我需要DateTime列,如下所示

2019-01-31 23:54:53
2019-01-31 23:51:27

Tags: csv代码文本dfreaddatetime格式时间
3条回答

使用pd.to_datetime转换为您选择的日期时间格式。你知道吗

例如:

import pandas as pd

df = pd.read_csv(filename,sep='\s+',header=None)
df.columns = [ 'DateTime', 'Extra1','Extra2']
df.drop(['Extra2'], inplace=True, axis=1)

df["DateTime"] = pd.to_datetime(df["DateTime"] + df['Extra1'].astype(int).astype(str), format="%Y-%m-%d.%H.%M.%S")
df.drop(['Extra1'], inplace=True, axis=1) 

print(df)
df.to_csv('C:/prod/data_out2.csv',index=False)

#or using df.pop
#df["DateTime"] = pd.to_datetime(df["DateTime"] + df.pop('Extra1').astype(int).astype(str), format="%Y-%m-%d.%H.%M.%S") 
#df.to_csv(filename_1,index=False)

输出:

             DateTime
0 2019-01-31 23:54:53
1 2019-01-31 23:51:27

标准datetime.strptime应该在这种情况下起作用,因为微秒只能有6个数字,所以最后9个数字应该减少到6

import datetime

print(datetime.datetime.strptime('2019-1-31.23.54. 53. 207000', '%Y-%m-%d.%H.%M. %S. %f'))

输出将是

2019-01-31 23:54:53.207000

您可以先尝试用pd.to_datetime转换成标准的日期时间格式

>>> print(dates)
['2019-1-31.23.54.', '2019-1-31.23.51.']

>>> pd.to_datetime(dates, format='%Y-%m-%d.%H.%M.')
DatetimeIndex(['2019-01-31 23:54:00', '2019-01-31 23:51:00'], dtype='datetime64[ns]', freq=None)

相关问题 更多 >