2
你好這裏是我不理解行爲的一個例子。 這裏是多指標的列的例子大熊貓多指標列方式選擇返回所有列,而不是子集
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)
現在我想通過第一級選擇DF的一個子集,並返回相關的列:
df.loc[:, ['bar']].columns
回報
MultiIndex(levels=[['bar'], ['one', 'two']],
labels=[[0, 0], [0, 1]],
names=['first', 'second'])
但是
df.loc[:, ['bar', 'baz']].columns
個
回報
MultiIndex(levels=[['bar', 'baz', 'foo', 'qux'], ['one', 'two']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=['first', 'second'])
任何原因,第二個將返回所有的列名,而不是
MultiIndex(levels=[['bar', 'baz'], ['one', 'two']] etc...
而且更重要的是任何速戰速決,所以我只能返回相關的數據?
爲大熊貓自嘲面板(這曾經是存儲多維數據非常優雅的方式)
哇。這是新版本中的一個很好的發現。 +1 –
@ScottBoston - 確實如此。謝謝。 – jezrael
非常感謝。這是一種非常奇怪的行爲,因爲它對一個或多個行爲並不一樣。 –