0

我想从我得到的输入数据中生成时间/日期格式字符串。是否有捷径可寻?

我的输入数据如下所示:

'01.12.2016 23:30:59,123'

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

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

背景:

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

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

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

编辑2

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

这怎么可能?

4

4 回答 4

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]
于 2016-07-08T13:41:16.303 回答
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()函数以所需的字符串格式获取日期时间。

于 2016-07-08T12:20:26.973 回答
0

您可能应该在这里看看:https ://github.com/humangeo/DateSense/

从其文档中:

>>> import DateSense
>>> print DateSense.detect_format( ["15 Dec 2014", "9 Jan 2015"] )
%d %b %Y
于 2016-08-02T09:35:27.280 回答
0

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

import datetime
print datetime.datetime.now().strftime('%d.%m.%Y %H:%M:%S,%f')
于 2016-07-08T12:04:25.230 回答