我正在尝试在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
会返回53
而input_datetime.minute
会返回0
。
当我不替换tzinfo时,我没有问题。
答案 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)
您可以使用熊猫.dt
和tz_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]