MultiIndex和DataFrame中的列

时间:2012-11-26 22:41:26

标签: pandas

使用MultiIndex列创建DataFrame时,似乎无法返回带有MultiIndex的单个列。而是返回具有索引的对象:

import pandas as pd
import numpy as np

dates = np.asarray(pd.date_range('1/1/2000', periods=8))
_metaInfo = pd.MultiIndex.from_tuples([('AA', '[m]'), ('BB', '[m]'), ('CC', '[s]'), ('DD', '[s]')], names=['parameter','unit'])

df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=_metaInfo)
print df.get('AA').columns
# Index([[m]], dtype=object)

缺少'参数'信息。 这是一个错误,是否有解决方法?

1 个答案:

答案 0 :(得分:1)

我也在努力解决这个问题。相反,为单个添加一个额外的级别(因此它匹配MultiIndex),也让我忙碌。

我有时会使用它来保持索引的完整性:

print df.T[[('AA', '[m]') == col for col in df.columns]].T

parameter         AA
unit             [m]
2000-01-01  0.972434
2000-01-02 -0.581852
2000-01-03 -0.784172
2000-01-04 -0.843441
2000-01-05 -1.030200
2000-01-06 -0.864225
2000-01-07 -0.530056
2000-01-08 -0.651367

但是,当您的索引更复杂时,这不是最灵活的解决方案。在这个例子中它可以工作。