我意识到我的一些数据帧缺少tzinfo,并确定combine_first正在删除它。我举了一个简短的例子:
df1 = pd.DataFrame(columns=['UTCdatetime','abc'],
data=pd.to_datetime('20100101 01:01').tz_localize('UTC'),
index=pd.date_range('20140627', periods=1))
print(df1)
df2 = pd.DataFrame(columns=['UTCdatetime','xyz'],
data=pd.to_datetime('20121212 12:12').tz_localize('UTC'),
index=pd.date_range('20140628', periods=1))
print(df2)
df1 = df2[['UTCdatetime']].combine_first(df1)
print(df1)
输出:
UTCdatetime abc
2014-06-27 2010-01-01 01:01:00+00:00 2010-01-01 01:01:00+00:00
UTCdatetime xyz
2014-06-28 2012-12-12 12:12:00+00:00 2012-12-12 12:12:00+00:00
UTCdatetime abc
2014-06-27 2010-01-01 01:01:00 2010-01-01 01:01:00+00:00
2014-06-28 2012-12-12 12:12:00 NaN
在combine_first之前,日期时间都显示UTC。但是,一旦我执行combine_first,就会丢失+00:00(例如UTC),尽管时间本身都很好。
我使用pandas 0.14.0。有没有办法避免丢失tzinfo?
在相关的说明中,是否有一种简单的方法可以通过编程方式判断tzinfo是否存在?如果tz_localize已经存在,则执行tz_localize会引发异常,如果不存在,则tz_convert会引发异常。谢谢!