मुझे लगता है कि संक्षिप्त उत्तर NO है। मल्टी-इंडेक्स कॉलम रखने के लिए, डेटाफ्रेम में हेडर में परिवर्तित होने के लिए दो (या अधिक) पंक्तियां होनी चाहिए (जैसे बहु-अनुक्रमणिका पंक्तियों के लिए कॉलम)। यदि आपके पास इस प्रकार का डेटाफ्रेम है, तो बहु-अनुक्रमणिका शीर्षलेख बनाना इतना कठिन नहीं है। यह कोड का एक बहुत ही लंबी लाइन में किया जा सकता है, और आप किसी भी अन्य dataframe में यह पुन: उपयोग कर सकते हैं, हेडर का ही पंक्ति संख्या मन & परिवर्तन में रखा जाना चाहिए, तो अलग है:
df = pd.DataFrame({'a':['foo_0', 'bar_0', 1, 2, 3], 'b':['foo_0', 'bar_1', 11, 12, 13],
'c':['foo_1', 'bar_0', 21, 22, 23], 'd':['foo_1', 'bar_1', 31, 32, 33]})
dataframe:
a b c d
0 foo_0 foo_0 foo_1 foo_1
1 bar_0 bar_1 bar_0 bar_1
2 1 11 21 31
3 2 12 22 32
4 3 13 23 33
बनाना बहु सूचकांक वस्तु:
arrays = [df.iloc[0].tolist(), df.iloc[1].tolist()]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df.columns = index
मल्टी सूचकांक हैडर परिणाम:
शीर्ष लेख अनुक्रमित और dataframe ही निर्दिष्ट करने के लिए है
df = df.iloc[2:].reset_index(drop=True)
"एक पंक्ति" संस्करण (केवल एक चीज आप बदलना होगा:
first foo_0 foo_1
second bar_0 bar_1 bar_0 bar_1
0 foo_0 foo_0 foo_1 foo_1
1 bar_0 bar_1 bar_0 bar_1
2 1 11 21 31
3 2 12 22 32
4 3 13 23 33
अंत में हम तो पंक्ति सूचकांक रीसेट 0-1 पंक्तियों छोड़ने की ज़रूरत):
idx_first_header = 0
idx_second_header = 1
df.columns = pd.MultiIndex.from_tuples(list(zip(*[df.iloc[idx_first_header].tolist(),
df.iloc[idx_second_header].tolist()])), names=['first', 'second'])
df = df.drop([idx_first_header, idx_second_header], axis=0).reset_index(drop=True)
यह (सूचकांक = 'एक' a.pivot की तरह दिखता है, कॉलम = 'दो', मान = 'तीन') जो मैं चाहता हूं उसके करीब हो रहा है (डीएफ से जानकारी निकालने और उन्हें कॉलम में बदलना), हालांकि मुझे बहु-सूचकांक बनाने का तरीका नहीं पता है। – sheridp
मुझे नहीं लगता कि आप "कॉलम पर बहु-अनुक्रमणिका सेट करना" चाहते हैं, मुझे लगता है कि आप इसे पंक्तियों पर सेट करना चाहते हैं, फिर पंक्तियों को पंक्तियों में स्थानांतरित करना चाहते हैं? कृपया – smci