Python pandas добавить фрейм данных с содержимым массива в hdf файл - PullRequest
0 голосов
/ 14 марта 2020

Как я могу добавить фрейм данных в другой фрейм данных, который уже сохранен в файле, не загружая его из файла? (Python 3.6 & Pandas 1.0.1)
Пример:

import pandas as pd

data = [[['A01','A02'],'B0','C0'],[['A11','A12'],'B1','C1'],[['A21','A22'],'B2','C2']]
df = pd.DataFrame(data,columns=['A','B','C'])

data2 = [[['A31','A32'],'B3','C3'],[['A41','A42'],'B4','C4'],[['A51','A52'],'B5','C5']]
df2 = pd.DataFrame(data2,columns=['A','B','C'])

print(df.append(df2,ignore_index=True))

#version 1:
store = pd.HDFStore('test.h5','a')
store.append(key='foo',value=df)#, format='t', data_columns=True)
store.append(key='foo',value=df2)#, format='t', data_columns=True, append=True)

#version 2
df.to_hdf(path_or_buf='test.h5',key='foo',mode='w',format='t')
df2.to_hdf(path_or_buf='test.h5',key='foo',mode='a',append=True,format='t',data_columns=True)

#version 3
df.to_hdf(path_or_buf='test.h5',key='foo',mode='w',format='f')
df2.to_hdf(path_or_buf='test.h5',key='foo',mode='a',append=True,format='f',data_columns=True)

df3 = pd.read_hdf('test.h5',key='foo',mode='r')
print(df3)

версия 1: ошибка типа: объект типа 'int' не имеет len ()
версия 2: ошибка типа : объект типа 'int' не имеет len ()
версия 3: ValueError: может добавляться только в таблицы

Этот вопрос был задан аналогично здесь , но довольно долго go. Я пытался сделать это с более старой pandas версией, но это вызывает еще больше проблем.

РЕДАКТИРОВАТЬ:
Кажется, что проблема заключается в массивах как содержание. Если я использую только B и C, вот так, это работает:

data = [['B0','C0'],['B1','C1'],['B2','C2']]
df = pd.DataFrame(data,columns=['B','C'])
data2 = [['B3','C3'],['B4','C4'],['B5','C5']]
df2 = pd.DataFrame(data2,columns=['B','C'])

Кто-нибудь знает возможность, как я могу заставить его работать, несмотря на использование массивов в качестве контента?

...