我想从输入的数据中生成时间/日期格式字符串。 有一个简单的方法吗?
我的输入数据如下所示:
'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或更多数据集的其余部分。
这怎么可能?
答案 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