मैं निम्नलिखित DataFrame
के साथ शुरू:पांडा: MultiIndex कॉलम के लिए इष्टतम तरीका
और मैं:
df_1 = DataFrame({
"Cat1" : ["a", "b"],
"Vals1" : [1,2] ,
"Vals2" : [3,4]
})
df
मैं इस तरह देखने के लिए इसे पाने के लिए चाहते हैं यह कर सकते हैं, इस कोड के साथ:
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
लेकिन यहां इतने सारे कदम हैं कि मुझे कोड गंध महसूस होता है, या कम से कम कुछ अस्पष्ट रूप से पांडा-मूर्खतापूर्ण नहीं है, जैसे कि मैं एपीआई में कुछ बिंदु खो रहा हूं। पंक्ति-आधारित इंडेक्स के बराबर करना केवल एक कदम है, उदाहरण के लिए, set_index()
के माध्यम से। (ध्यान दें कि मुझे पता है कि set_index()
is still an open issue के बराबर कॉलम)। क्या ऐसा करने के लिए एक बेहतर, अधिक आधिकारिक तरीका है?
क्या मैं आपको कुछ सलाह दे सकता हूं? उपरोक्त सवाल विशेष रूप से अगर ओपी आपके उपरांत 15+ अंक के बाद मिलता है - तो ओपी आपके समाधान को ऊपर उठा सकता है;) – jezrael