Python pandas:如何编写tz感知的datetime列,其中包含一些要存储的缺失数据

Python pandas:如何编写tz感知的datetime列,其中包含一些要存储的缺失数据,python,pandas,Python,Pandas,我有一些数据帧,其中包含我需要写入存储的时区感知日期时间列。然而,一旦我有任何缺少的值,编写就会失败。我举了一个简单的例子: pd.set_option('io.hdf.default_format','table') mdstore = pd.HDFStore(storeFile, complevel=9, complib='blosc') utcdate = pd.to_datetime('20000101', utc=True) df1 = pd.DataFrame(columns=['U

我有一些数据帧,其中包含我需要写入存储的时区感知日期时间列。然而,一旦我有任何缺少的值,编写就会失败。我举了一个简单的例子:

pd.set_option('io.hdf.default_format','table')
mdstore = pd.HDFStore(storeFile, complevel=9, complib='blosc')
utcdate = pd.to_datetime('20000101', utc=True)
df1 = pd.DataFrame(columns=['UTCdatetime'], data=utcdate, index=pd.date_range('20140627', periods=2))
mdstore['/Test'] = df1
这很好,因为它没有丢失的值。如果我引入缺失值,尽管我会得到两个不同错误中的一个

错误1:如果随后添加另一列,但只填充了两行中的一行,则会出现错误:

df1.loc['20140628','UTCdatetime2'] = utcdate
print(df1)
mdstore['/Test'] = df1
                      UTCdatetime               UTCdatetime2
2014-06-27  2000-01-01 00:00:00+00:00                        NaN
2014-06-28  2000-01-01 00:00:00+00:00  2000-01-01 00:00:00+00:00

Exception: cannot find the correct atom type -> [dtype->object,items->Index([u'UTCdatetime', u'UTCdatetime2'], dtype='object')] 'float' object has no attribute 'tzinfo'
错误2:如果我添加一个填充了NA的新行,则会出现不同的错误:

df1.loc[pd.to_datetime('20140629'),'UTCdatetime'] = pd.NaT
print(df1)
mdstore['/Test'] = df1
                      UTCdatetime
2014-06-27  2000-01-01 00:00:00+00:00
2014-06-28  2000-01-01 00:00:00+00:00
2014-06-29                        NaN

TypeError: too many timezones in this block, create separate data columns
我希望有一个解决办法,不涉及填写一个任意日期的南的。我尝试了
fillna
pd.NaT
但是没有任何效果。谢谢


PS我对combine_first和tz()也有一个问题-似乎没有关系,只是以防万一。

现在我已经分解并开始将日期时间保存为字符串。。优雅的否,简单的是。您可以尝试使用
表格
格式。通常情况下,pandas在一个列中没有很好地测试混合时区,或者缺少带有时区的datetimes值。欢迎对这些进行更多的测试。也就是说,
datetime64[ns]
对于缺少的值非常有效。通常,如果我需要这样做,我会保留一个单独的“tz”信息栏。好的,谢谢你的建议杰夫!