我有数据框,其中包含我需要写入商店的时区感知日期时间列。但是,只要我有任何缺失值,写入就会失败。我设置了一个简单的例子:
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
我希望找到一个不会以任意日期填写NaN的解决方法。我使用fillna
尝试pd.NaT
,但没有做任何事情。谢谢!
PS我也遇到了combine_first和tz(pandas tzinfo lost by combine_first)的问题 - 看起来并不相关,只是以防万一。