【发布时间】:2016-04-14 16:41:48
【问题描述】:
我有一个 DataFrame,df1,它是df 的一部分。 df 是多索引的,形状为 (8,)。切片删除了df 的一些第二级。当我执行df1.shape 时,它返回(4,) - 一切都很好 - 但是当我执行df1.index.levels[0] 时,它返回(4,)。这是怎么回事?
In [ ]:
arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
df = pd.DataFrame(np.random.randn(8,2), index=arrays)
df
Out [ ]:
0 1
bar one -0.447155 -0.323073
two 0.115899 -0.015561
baz one -0.272498 1.847073
two -0.399948 -0.264327
foo one 0.169687 -1.708543
two 1.154434 0.878936
qux one 0.535721 0.437186
two -1.203431 0.568412
In [ ]:
df1=df[df[1]>0]
Out [ ]:
0 1
baz one -0.272498 1.847073
foo two 1.154434 0.878936
qux one 0.535721 0.437186
two -1.203431 0.568412
现在是奇怪的部分
In [ ]:
df1=df[df[1]>0]
print(df1.index.levels[0], df1.index.levels[0].shape)
Out [ ]:
Index(['bar', 'baz', 'foo', 'qux'], dtype='object') (4,)
我觉得这很奇怪,因为df1 中没有显示bar。这背后的原因是什么?
我的猜测是与复制/不复制有关,但我不明白为什么。
【问题讨论】:
标签: python pandas indexing dataframe