熊猫破坏日期时间对象

时间:2017-12-14 21:24:05

标签: python pandas datetime pytz

我正在尝试在pandas DataFrame中创建时区感知日期列。当我运行下面的代码时,生成的pandas列与我输入的日期时间不同。我在这里做错了什么?

我正在使用python 3.6.2和pandas 0.20.3

from datetime import datetime
import pandas as pd
import pytz 
date_string = "12/14/2016 12:00"
timezone = pytz.timezone("US/Pacific")
input_datetime =  datetime.strptime(date_string, "%m/%d/%Y %H:%M").replace(tzinfo=timezone)
df = pd.DataFrame({"datetime":[input_datetime]})

如果我运行该代码,df['datetime'][0].minute会返回53input_datetime.minute会返回0

当我不替换tzinfo时,我没有问题。

2 个答案:

答案 0 :(得分:1)

如果您第一次转换input_datetime,则可以使用.dt.minute调用数据框的分钟(或年份等)

input_datetime = pd.to_datetime(datetime.strptime(date_string, 
                                                  "%m/%d/%Y %H:%M")).replace(tzinfo=timezone)


df = pd.DataFrame({"datetime":[input_datetime]})
df['datetime'].dt.minute

答案 1 :(得分:0)

您可以使用熊猫.dttz_localize

from datetime import datetime
import pandas as pd
date_string = "12/14/2016 12:00"
df = pd.DataFrame({'datetime':[datetime.strptime(date_string, "%m/%d/%Y %H:%M")]})
df['datetime'].dt.tz_localize('US/Pacific')

输出:

0   2016-12-14 12:00:00-08:00
Name: datetime, dtype: datetime64[ns, US/Pacific]