如果我在这样的列中有一堆datetime(UTC(:
63058 01/22/2018 11:00:00
63059 01/22/2018 12:00:00
63060 01/22/2018 13:00:00
Name: date, Length: 63061, dtype: object
或者这个:
DatetimeIndex(['2007-12-21 17:00:00', '2007-12-21 18:00:00',
'2007-12-21 19:00:00', '2007-12-21 20:00:00',
'2007-12-21 21:00:00', '2007-12-23 20:00:00',
'2007-12-23 22:00:00', '2007-12-23 23:00:00',
'2007-12-24 00:00:00', '2007-12-24 01:00:00',
...
'2018-01-22 04:00:00', '2018-01-22 05:00:00',
'2018-01-22 06:00:00', '2018-01-22 07:00:00',
'2018-01-22 08:00:00', '2018-01-22 09:00:00',
'2018-01-22 10:00:00', '2018-01-22 11:00:00',
'2018-01-22 12:00:00', '2018-01-22 13:00:00'],
dtype='datetime64[ns]', length=63061, freq=None)
如何将整个(列表或系列(,无论它被称为什么格式:
datetime(2016, 1, 24, 18, 0, 0, tzinfo=utc)
因为我需要使用pytz
模块将 UTC 转换为东部时间。
我收到此错误:AttributeError: 'Index' object has no attribute 'astimezone'
当我将astimezone().strftime()
与原始数据格式一起使用时。 这是我最初想做的,但现在我遇到了这个问题。谢谢。
您可以定义一个函数来转换字符串表示形式之一,如下所示:
from datetime import datetime
import pytz
def date_from_string(s):
"Convert ``s`` from a string to a datetime object in the UTC time zone."
dt = datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
return dt.replace(tzinfo=pytz.utc)
然后,您可以在构造函数中将其与map
一起使用
DatetimeIndex(map(date_from_string, [
'2007-12-21 17:00:00', '2007-12-21 18:00:00',
'2007-12-21 19:00:00', '2007-12-21 20:00:00',
'2007-12-21 21:00:00', '2007-12-23 20:00:00',
'2007-12-23 22:00:00', '2007-12-23 23:00:00',
'2007-12-24 00:00:00', '2007-12-24 01:00:00',
...
'2018-01-22 04:00:00', '2018-01-22 05:00:00',
'2018-01-22 06:00:00', '2018-01-22 07:00:00',
'2018-01-22 08:00:00', '2018-01-22 09:00:00',
'2018-01-22 10:00:00', '2018-01-22 11:00:00',
'2018-01-22 12:00:00', '2018-01-22 13:00:00']),
dtype='datetime64[ns]', length=63061, freq=None)
文档包含更多信息:
datetime.strptime(..)
: https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
map(..)
: https://docs.python.org/2/library/functions.html#map