1

创建具有 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)

缺少“参数”信息的地方。这是一个错误,有解决方法吗?

4

1 回答 1

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

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

于 2012-11-27T08:10:53.960 回答