这工作正常:
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 文档中找不到任何引用资料表明多重索引实际上仅限于索引,而不是列。
最佳答案
不支持此功能,例如既是列多索引又是索引多索引。任何一个都可以单独工作。然而,一般来说,列多索引不是很有用,因为如果没有一些非常奇怪的语法就不可能从中进行选择(列存储为元组,因此必须显式选择它们)。所以无论如何我都不会推荐它。
我将提出一个问题来支持两者,因为它当前提出,无论如何,请参见此处:https://github.com/pydata/pandas/issues/5823
关于python - Pandas HDFStore 表不接受多索引列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888226/