从时间戳生成日期时间格式字符串

时间:2016-07-08 11:34:53

标签: python datetime pandas string-to-datetime

我想从输入的数据中生成时间/日期格式字符串。 有一个简单的方法吗?

我的输入数据如下所示:

'01.12.2016 23:30:59,123'

所以我的代码应生成以下格式字符串:

'%d.%m.%Y %H:%M:%S,%f'

背景:

我使用pandas.to_datetime()生成日期时间对象以进行进一步处理。这很有用,但是这个函数变得很慢(使用dateutil.parser.parse here)包含大量数据(> ~50k)。目前我在我的代码中提供了硬编码的格式字符串,以加快to_datetime(),这也很有效。现在我想在代码中生成格式字符串,以便更灵活地重新输入数据。

编辑(因为前两个答案不适合我的问题):

我想生成格式字符串而不是日期时间字符串。

EDIT2

制定问题的新方法:我正在阅读包含大量数据的文件。每行数据都有一个时间戳,格式如下:' 01.12.2016 23:30:59,123'。我想将这些时间戳转换为datetime对象。为此,我现在正在使用pandas.to_datetime()。这个函数运行得很好但是因为我得到了一些超过50k数据集的文件所以它变得很慢。为了加快这个过程,我在函数pandas.to_datetime中传递格式字符串(格式='%d。%m。%Y%H:%M:%S,%f') 。这加快了过程,但灵活性较差。因此,我想仅为第一个数据集评估格式字符串,并将其用于50k或更多数据集的其余部分。

这怎么可能?

4 个答案:

答案 0 :(得分:1)

您可以尝试使用infer_datetime_format参数,但要注意 - pd.to_datetime()默认使用dayfirst=False

演示:

In [422]: s
Out[422]:
0    01.12.2016 23:30:59,123
1    23.12.2016 03:30:59,123
2    31.12.2016 13:30:59,123
dtype: object

In [423]: pd.to_datetime(s, infer_datetime_format=True)
Out[423]:
0   2016-01-12 23:30:59.123
1   2016-12-23 03:30:59.123
2   2016-12-31 13:30:59.123
dtype: datetime64[ns]

In [424]: pd.to_datetime(s, infer_datetime_format=True, dayfirst=True)
Out[424]:
0   2016-12-01 23:30:59.123
1   2016-12-23 03:30:59.123
2   2016-12-31 13:30:59.123
dtype: datetime64[ns]

答案 1 :(得分:0)

使用" datatime"返回数据和时间。我这会帮助你。

import datetime
print datetime.datetime.now().strftime('%d.%m.%Y %H:%M:%S,%f')

答案 2 :(得分:0)

您可以在datetime.strptime()包中使用datetime,这将返回datetime.datetime个对象。

在您的情况下,您应该执行以下操作:

datetime.strptime('01.12.2016 23:30:59,123', '%d.%m.%Y %H:%M:%S,%f')

拥有datetime.datetime对象后,您可以使用datetime.strftime()函数以所需的字符串格式获取日期时间。

答案 3 :(得分:0)

你应该看看这里:https://github.com/humangeo/DateSense/

从其文档:

>>> import DateSense
>>> print DateSense.detect_format( ["15 Dec 2014", "9 Jan 2015"] )
%d %b %Y