Если у меня есть два DataFrames с несоответствующими категориальными столбцами и уровнями MultiIndex, как я могу эффективно объединить их в один DataFrame?
import pandas as pd
t = pd.DataFrame(data={'i1':['a','a','a','a','b','b','b','b','c','c','c','c'],
'i2':[0,1,2,3,0,1,2,3,0,1,2,3],
'x':[1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.],
'y':['x','y','x','y','x','y','x','y','x','y','x','y']})
t['i1'] = t['i1'].astype('category')
t['y'] = t['y' ].astype('category')
t.set_index(['i1','i2'], inplace=True)
t.sort_index(inplace=True)
print(t.index.levels[0]) # :-)
t2 = pd.DataFrame(data={'i1':['d','d','d','d'],
'i2':[0,1,2,3],
'x':[13.,14.,15.,16.],
'y':['x','z','x','z']})
t2['i1'] = t2['i1'].astype('category')
t2['y'] = t2['y' ].astype('category')
t2.set_index(['i1','i2'], inplace=True)
t2.sort_index(inplace=True)
pd.concat([t,t2], sort=False)
# TypeError: categories must match existing categories when appending
Вот пример DataFrames:
>>> t
x y
i1 i2
a 0 1.0 x
1 2.0 y
2 3.0 x
3 4.0 y
b 0 5.0 x
1 6.0 y
2 7.0 x
3 8.0 y
c 0 9.0 x
1 10.0 y
2 11.0 x
3 12.0 y
>>> t2
x y
i1 i2
d 0 13.0 x
1 14.0 z
2 15.0 x
3 16.0 z
У меня есть тысячи файлов данных и ТБ данных, поэтому преобразование их в согласованные категории было бы довольно сложной задачей.Надеюсь, этого можно избежать.
Спасибо за помощь!