Ich habe einen DataFrame, df1
, die ein Stück df
ist. df
ist multiindiziert und hat die Form (8,)
. Die Schicht entfernt einige der zweiten Ebene von df
. Wenn ich df1.shape
mache, gibt es (4,)
zurück - alles gut - aber wenn ich df1.index.levels[0]
mache, gibt das (4,)
zurück. Wie kommt es dazu?Warum unterscheidet sich der Index eines Pandas DataFrame Slice von seiner Form?
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
Jetzt für die seltsame Bit
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,)
Ich finde das seltsam, da es keine bar
in df1
gezeigt ist. Was ist der Grund dafür?
Meine Vermutung ist, dass es etwas mit dem Kopieren/nicht Kopieren zu tun hat, aber ich verstehe nicht warum.
I Ich denke, Ich wusste nicht genug über Multiindexing zu denken, um dort zu suchen oder wissen, wofür man so vielen Dank suchen! – josh