Это прекрасно работает:Панды HDFStore таблицы не принимает мультииндексных столбцы
cols = ['X', 'Y']
ind = [('A', 1), ('B', 2)]
ind = pd.MultiIndex.from_tuples(index, names=['foo', 'number'])
df = pd.DataFrame(rand(2,2), columns = cols, index=ind)
store.put('df', df, table=True)
print store['df']
X Y
foo number
A 1 0.015005 0.213427
B 2 0.090311 0.595418
Это ломает:
cols = [('X', 1), ('Y', 2)]
cols = pd.MultiIndex.from_tuples(index, names=['bar', 'number'])
ind = [('A', 1), ('B', 2)]
ind = pd.MultiIndex.from_tuples(index, names=['foo', 'number'])
df = pd.DataFrame(rand(2,2), columns = cols, index=ind)
store.put('df', df, table=True)
print store['df']
KeyError: u'no item named foo'
Я подозреваю, что это известное ограничение использования PyTables, но я не мог найти любая ссылка в Pandas сообщает, что мультииндекс фактически ограничен индексом, а не столбцами.
На самом деле не так сложно выделить многоколонные слова, например: '' idx = pd.IndexSlice; df.loc [:, idx [:, 'mean']] '' то, что я делаю все время. – ankostis
@ankostis это из хранилища на диске, которое сериализует имена столбцов в виде строк и НЕ в рамке памяти – Jeff