Python中是否有as.Date()等价(R)?

时间:2016-04-01 16:57:29

标签: python datetime

假设我们有一个字符串:

string = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five."

在Python中,除了2014-12-04之外,我必须删除所有内容,然后使用

time.mktime(datetime.datetime.strptime(string, "%Y-%m-%d").timetuple())

另一方面,在R中,我所要做的只是as.Date(string),我以日期形式得到了合适的日期。 Python有这样的东西吗?

4 个答案:

答案 0 :(得分:3)

如果您知道字符串中的位置和日期格式,则可以与strptime一起使用切片:

import datetime as dt

>>> dt.datetime.strptime(string[:10], '%Y-%m-%d').date()
datetime.date(2014, 12, 4)

如果你想使用像熊猫这样的包:

>>> pd.to_datetime(string[:10])
Timestamp('2014-12-04 00:00:00')

您还可以使用dateutil包:

from dateutil.parser import parse

parse(string[:10]).date()
datetime.date(2014, 12, 4)

答案 1 :(得分:2)

fuzzy的{​​{1}}参数用于此目的:

dateutil

结果是:

from dateutil.parser import parse

string = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five."
dt = parse(string, fuzzy=True)

如果您只想要日期,只需使用datetime.datetime(2014, 12, 4, 4, 7, 59) 返回日期对象。

请注意,如果字符串中的其他内容可能合理地成为日期的一部分(例如单词dt.date()或其他内容),则会导致解析器出现问题。

如果您想查看跳过的内容,请使用March

fuzzy_with_tokens

from dateutil.parser import parse string = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five." dt = parse(string, fuzzy=True) dt, tokens = parse(string, fuzzy_with_tokens=True) 解析为:

tokens

答案 2 :(得分:1)

要在任意文字中查找日期/时间,您可以尝试parsedatetime module

>>> import parsedatetime as pdt # $ pip install parsedatetime
>>> text_with_date = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five."
>>> pdt.Calendar().nlp(text_with_date)
((datetime.datetime(2014, 12, 4, 4, 7, 59), 3, 0, 19, '2014-12-04 04:07:59'),)

给定一个datetime对象,调用.date()方法,只获取日期部分。

答案 3 :(得分:0)

是的,与Python(R)中的as.Date()类似。 请尝试以下操作:

true_time = pd.to_datetime(your_array, origin ='2000/1/1', unit = 'D')

使用origin指定参考日期; 使用unit可以指定特定的步长(例如D-天,ms-毫秒等) 同样在这种情况下,your_array可以是一个列表。 还有更多信息here