Gibt es eine Möglichkeit, das Ergebnis get_level_values
für mehr als eine Spalte zu erhalten?pandas get_level_values für mehrere Spalten
Angesichts der folgenden DataFrame
:
d
a b c
1 4 10 16
11 17
5 12 18
2 5 13 19
6 14 20
3 7 15 21
Ich möchte die Werte erhalten (dh Liste von Tupeln) der Ebenen a
und c
:
[(1, 10), (1, 11), (1, 12), (2, 13), (2, 14), (3, 15)]
Hinweise:
Es ist unmöglich,
get_level_values
mehr als eine Ebene anzugeben (z.df.index.get_level_values(['a','c']
)Es gibt eine Abhilfe, in das man sich
get_level_values
über jede gewünschte Spalte undzip
gemeinsam nutzen könnte:
Zum Beispiel:
a_list = df.index.get_level_values('a').values
c_list = df.index.get_level_values('c').values
print([i for i in zip(a_list,c_list)])
[(1, 10), (1, 11), (1, 12), (2, 13), (2, 14), (3, 15)]
aber es bekommt umständlich als die Anzahl von Spalten wachsen.
- Der Code am Beispiel
DataFrame
zu bauen:
df = pd.DataFrame({'a':[1,1,1,2,2,3],'b':[4,4,5,5,6,7,],'c':[10,11,12,13,14,15], 'd':[16,17,18,19,20,21]}).set_index(['a','b','c'])
Nizza Verwendung von 'droplevel' tun in der letzte Fall :) – IanS