Ich bin auf dies gestoßen, als ich Dataframes mit MultiIndexes verwendet habe und fand squeeze nützlich.
Aus der Dokumentation:
Drückt eindimensionale Achsenobjekte zu Skalaren zusammen.
Series oder DataFrames mit einem einzigen Element werden zu einem Skalar zusammengepresst. DataFrames mit einer einzelnen Spalte oder einer einzigen Zeile werden zu einer Series zusammengepresst. Andernfalls bleibt das Objekt unverändert.
# Beispiel für einen Dataframe mit MultiIndex
> import pandas as pd
> df = pd.DataFrame(
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
],
index=pd.MultiIndex.from_tuples( [('i', 1), ('ii', 2), ('iii', 3)] ),
columns=pd.MultiIndex.from_tuples( [('A', 'a'), ('B', 'b'), ('C', 'c')] )
)
> df
A B C
a b c
i 1 1 2 3
ii 2 4 5 6
iii 3 7 8 9
> df.loc['ii', 'B']
b
2 5
> df.loc['ii', 'B'].squeeze()
5
Zu beachten ist, dass während df.at[]
auch funktioniert (wenn Sie keine Bedingungen verwenden müssen), müssen Sie meines Wissens nach dennoch alle Ebenen des MultiIndex angeben.
Beispiel:
> df.at[('ii', 2), ('B', 'b')]
5
Ich habe einen DataFrame mit einem sechsstufigen Index und zweistufigen Spalten, daher ist es recht hilfreich, nur die äußere Ebene angeben zu müssen.