У меня проблема с добавлением кадров данных MultiIndex pandas в базу данных HDF5. Вот мой код:
import pandas as pd
import numpy as np
index = pd.MultiIndex(levels=[['foo', 'bar', 'baz', 'qux'],
['one', 'two', 'three']],
codes=[[0, 0, 0, 1, 1, 2, 2, 3, 3, 3],
[0, 1, 2, 0, 1, 1, 2, 0, 1, 2]],
names=['foo', 'bar'])
data = np.random.randn(10, 3)
df_mi = pd.DataFrame(data, index=index,
columns=['A', 'B', 'C'])
print(df_mi)
store = pd.HDFStore('test_1.h5')
store.append('frame_0', df_mi)
df_mi_1 = pd.DataFrame(data,
index=['one', 'two', 'three', 'one', 'two', 'two', 'three', 'one', 'two', 'three'],
columns=['A', 'B', 'C'])
store.close()
index_0 = ['foo', 'foo', 'foo', 'bar', 'bar', 'baz', 'baz', 'qux', 'qux', 'qux']
df_mi_1.index = pd.MultiIndex.from_tuples(list(zip(index_0,
df_mi_1.index)),
names=['foo', 'bar'])
print(df_mi_1)
store_1 = pd.HDFStore('test_2.h5')
store_1.append('frame_0', df_mi_1)
store_1.close()
Теперь два кадра данных df_mi
и df_mi_1
выглядят одинаково при печати. Однако store_1.append('frame_0', df_mi_1)
возвращает следующую ошибку:
File "C:\Users\test_df_to_hdf_2.py", line 65, in <module>
store_1.append('frame_0', df_mi_1)
File "C:\Program Files\Python37\lib\site-packages\pandas\io\pytables.py", line 1059, in append
self._write_to_group(key, value, append=append, dropna=dropna, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\pandas\io\pytables.py", line 1525, in _write_to_group
s.write(obj=value, append=append, complib=complib, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\pandas\io\pytables.py", line 4615, in write
return super().write(obj=obj, data_columns=data_columns, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\pandas\io\pytables.py", line 4194, in write
axes=axes, obj=obj, validate=append, min_itemsize=min_itemsize, **kwargs
File "C:\Program Files\Python37\lib\site-packages\pandas\io\pytables.py", line 3888, in create_axes
items=(",".join(pprint_thing(item) for item in items))
ValueError: cannot match existing table structure for [i,n,t,e,g,e,r] on appending data
Я использую Python 3.7.4 (64 бита) с Numpy 1.17.4 и Pandas 0.25.3 при Windows 10 Professional (64 бит).
Я пытался найти ответ, но ничего не нашел, и я как бы застрял в идеях о том, как его решить. Я действительно хотел бы иметь возможность использовать MultiIndex.from_tuples
, потому что это удобно, и я уже реализовал его в своем основном скрипте. Большое спасибо