Ich beginne mit den folgenden DataFrame
:Pandas: Optimaler Weg zu Multiindex Spalten
df_1 = DataFrame({
"Cat1" : ["a", "b"],
"Vals1" : [1,2] ,
"Vals2" : [3,4]
})
df
ich mag es bekommen wie folgt aussehen:
Und mich kann es tun, mit diesem Code:
df_2 = (
pd.melt(df_1, id_vars=["Cat1"])
.T
)
df_2.columns = (
pd.MultiIndex
.from_tuples(
list(zip(df_2.loc["Cat1", :] , df_2.loc["variable", :])) ,
names=["Cat1", None]
)
)
df_2 = (
df_2
.loc[["value"], :]
.reset_index(drop=True)
.sortlevel(0, axis=1)
)
df_2
Aber es gibt so viele Schritte hier, dass ich Code-Geruch fühle, oder zumindest etwas vage pandas-idiomatisch, als ob ich den Punkt etwas in der API vermisse. Das Äquivalent für zeilenbasierte Indizes ist nur ein Schritt, z. B. über set_index()
. (Beachten Sie, dass mir bekannt ist, dass die Spalten äquivalent zu set_index()
is still an open issue sind). Gibt es einen besseren, offiziellen Weg, dies zu tun?
Kann ich Ihnen einen Rat geben? Upvote Frage vor allem, wenn OP nach Ihrer Upvote 15+ Punkte bekommen - dann kann OP Ihre Lösungen verbessern;) – jezrael