Pandas to_hdf在包含可为空的int数据类型(例如Int8Dtype)的数据帧上失败

Pandas to_hdf在包含可为空的int数据类型(例如Int8Dtype)的数据帧上失败,pandas,nullable,hdf5,pytables,Pandas,Nullable,Hdf5,Pytables,我正试图减少我们处理的一些大数据的内存消耗,这样就可以在不抛出内存错误的情况下向其中添加更多数据。在可能的情况下,向下投射浮动会有所帮助,但我发现主要的节约是在可能的情况下投射浮动64 Int8和Int16。此数据包含NAN。这是不可避免的,在上下文中,我无法用任何不会改变数据含义的值来替换NaNs。新的可为空的数据类型在这方面很好,但我得到了ValueError:在尝试将结果帧保存到hdf时,无法将float NaN转换为整数 我曾尝试使用to_hdf指定和不指定表格格式,并得到不同的错误(未

我正试图减少我们处理的一些大数据的内存消耗,这样就可以在不抛出内存错误的情况下向其中添加更多数据。在可能的情况下,向下投射浮动会有所帮助,但我发现主要的节约是在可能的情况下投射浮动64 Int8和Int16。此数据包含NAN。这是不可避免的,在上下文中,我无法用任何不会改变数据含义的值来替换NaNs。新的可为空的数据类型在这方面很好,但我得到了ValueError:在尝试将结果帧保存到hdf时,无法将float NaN转换为整数

我曾尝试使用to_hdf指定和不指定表格格式,并得到不同的错误(未指定表格格式,错误为AttributeError:'NoneType'对象没有属性'names')


df=pd.DataFrame([1,2,3,np.nan,5],columns=['A']))
df.to_hdf('Z:/test.hd5','data')
#这很有效
df['A']=df.A.astype(pd.Int8Dtype())
df.to_hdf('Z:/test.hd5','data')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
df.to_hdf('Z:/test.hd5','data',complevel=9,complib='blosc:zlib'))
文件“C:\Users\marnoch.hamilton jon\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\core\generic.py”,第2377行,在to_hdf中
返回pytables.to_hdf(路径_或_buf,键,self,**kwargs)
文件“C:\Users\marnoch.hamilton jon\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\io\pytables.py”,第274行,在to_hdf中
f(商店)
文件“C:\Users\marnoch.hamilton jon\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\io\pytables.py”,第268行,在
f=lambda存储:存储.放置(键,值,**kwargs)
文件“C:\Users\marnoch.hamilton jon\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\io\pytables.py”,第889行,输入
self.\u写入组(键、值、append=append、**kwargs)
文件“C:\Users\marnoch.hamilton jon\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\io\pytables.py”,第1415行,在写入组中
s、 写入(obj=value,append=append,complib=complib,**kwargs)
写入文件“C:\Users\marnoch.hamilton jon\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\io\pytables.py”,第3022行
blk.values,项目=blk_项目)
文件“C:\Users\marnoch.hamilton jon\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\io\pytables.py”,第2750行,在write\u数组中
atom=\u tables().atom.from\u dtype(value.dtype)
文件“C:\Users\marnoch.hamilton jon\AppData\Local\Continuum\anaconda3\lib\site packages\tables\atom.py”,第381行,from\u dtype
如果是basedtype.names:
AttributeError:“非类型”对象没有属性“名称”
´´´
这是虫子吗?故意限制?还是我做了什么蠢事?

这是个错误。有关状态,请参阅

´´´
df=pd.DataFrame([1,2,3,np.nan,5], columns=['A'])
df.to_hdf('Z:/test.hd5', 'data')
#This works

df['A']=df.A.astype(pd.Int8Dtype())
df.to_hdf('Z:/test.hd5', 'data')

Traceback (most recent call last):

  File "<ipython-input-51-6b0f3ad26286>", line 1, in <module>
    df.to_hdf('Z:/test.hd5', 'data', complevel=9, complib='blosc:zlib')

  File "C:\Users\marnoch.hamilton-jon\AppData\Local\Continuum\anaconda3       \lib\site-packages\pandas\core\generic.py", line 2377, in to_hdf
    return pytables.to_hdf(path_or_buf, key, self, **kwargs)

  File "C:\Users\marnoch.hamilton-jon\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\pytables.py", line 274, in to_hdf
    f(store)

  File "C:\Users\marnoch.hamilton-jon\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\pytables.py", line 268, in <lambda>
    f = lambda store: store.put(key, value, **kwargs)

  File "C:\Users\marnoch.hamilton-jon\AppData\Local\Continuum\anaconda3 \lib\site-packages\pandas\io\pytables.py", line 889, in put
    self._write_to_group(key, value, append=append, **kwargs)

  File "C:\Users\marnoch.hamilton-jon\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\pytables.py", line 1415, in _write_to_group
    s.write(obj=value, append=append, complib=complib, **kwargs)

  File "C:\Users\marnoch.hamilton-jon\AppData\Local\Continuum\anaconda3 \lib\site-packages\pandas\io\pytables.py", line 3022, in write
    blk.values, items=blk_items)

  File "C:\Users\marnoch.hamilton-jon\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\pytables.py", line 2750, in write_array
    atom = _tables().Atom.from_dtype(value.dtype)

  File "C:\Users\marnoch.hamilton-jon\AppData\Local\Continuum\anaconda3\lib\site-packages\tables\atom.py", line 381, in from_dtype
    if basedtype.names:

 AttributeError: 'NoneType' object has no attribute 'names'
´´´