जवाबों:
या तो:
df['index1'] = df.index
या .reset_index
:
df.reset_index(level=0, inplace=True)
इसलिए, यदि आपके पास अनुक्रमणिका के 3 स्तरों के साथ एक मल्टी-इंडेक्स फ्रेम है, जैसे:
>>> df
val
tick tag obs
2016-02-26 C 2 0.0139
2016-02-27 A 2 0.5577
2016-02-28 C 6 0.0303
और आप इंडेक्स में 1 ( tick
) और 3 ( obs
) स्तरों को कॉलम में बदलना चाहते हैं, आप यह करेंगे:
>>> df.reset_index(level=['tick', 'obs'])
tick obs val
tag
C 2016-02-26 2 0.0139
A 2016-02-27 2 0.5577
C 2016-02-28 6 0.0303
df.reset_index(level=df.index.names, inplace=True)
एक कॉलम में दिए गए पूरे multiindex में बदल सकते हैं
df.reset_index()
, जो इंडेक्स की संपूर्णता को कॉलम (एक कॉलम प्रति स्तर) में स्थानांतरित करता है और 0 से लेन (df) -1 के लिए एक इंटेक्स इंडेक्स बनाता है
df['index1'] = df.index
एक चेतावनी देता है: "एक मान एक DataFrame से एक स्लाइस की एक प्रति पर सेट करने की कोशिश कर रहा है।" नीचे दिखाए अनुसार, df.assign () फ़ंक्शन का उपयोग करें।
थोड़ा और स्पष्टता प्रदान करने के लिए, आइए एक डेटाफ़्रेम को इसके सूचकांक में दो स्तरों (एक मल्टीइंडेक्स) पर देखें।
index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'],
['North', 'South']],
names=['State', 'Direction'])
df = pd.DataFrame(index=index,
data=np.random.randint(0, 10, (6,4)),
columns=list('abcd'))
reset_index
डिफ़ॉल्ट मापदंडों के साथ कहा जाने वाला तरीका, सभी सूचकांक स्तरों को स्तंभों में परिवर्तित करता है और RangeIndex
नए सूचकांक के रूप में एक सरल का उपयोग करता है ।
df.reset_index()
level
सूचकांक को स्तंभों में परिवर्तित करने के लिए पैरामीटर का उपयोग करें । यदि संभव हो, तो स्तर नाम का उपयोग करें, जो अधिक स्पष्ट है। यदि कोई स्तर नाम नहीं हैं, तो आप प्रत्येक स्तर को इसके पूर्णांक स्थान से संदर्भित कर सकते हैं, जो कि बाहर से 0 से शुरू होता है। आप यहां एक स्केलर मान या उन सभी अनुक्रमणिकाओं की सूची का उपयोग कर सकते हैं जिन्हें आप रीसेट करना चाहते हैं।
df.reset_index(level='State') # same as df.reset_index(level=0)
उस दुर्लभ घटना में जिसे आप सूचकांक को संरक्षित करना चाहते हैं और सूचकांक को एक कॉलम में बदलना चाहते हैं, आप निम्न कार्य कर सकते हैं:
# for a single level
df.assign(State=df.index.get_level_values('State'))
# for all levels
df.assign(**df.index.to_frame())
rename_axis
+ reset_index
आप पहले अपने सूचकांक को एक वांछित लेबल में बदल सकते हैं, फिर एक श्रृंखला के लिए बढ़ा सकते हैं:
df = df.rename_axis('index1').reset_index()
print(df)
index1 gi ptt_loc
0 0 384444683 593
1 1 384444684 594
2 2 384444686 596
यह MultiIndex
डेटाफ्रेम के लिए भी काम करता है :
print(df)
# val
# tick tag obs
# 2016-02-26 C 2 0.0139
# 2016-02-27 A 2 0.5577
# 2016-02-28 C 6 0.0303
df = df.rename_axis(['index1', 'index2', 'index3']).reset_index()
print(df)
index1 index2 index3 val
0 2016-02-26 C 2 0.0139
1 2016-02-27 A 2 0.5577
2 2016-02-28 C 6 0.0303
यदि आप reset_index
विधि का उपयोग करना चाहते हैं और अपने मौजूदा सूचकांक को भी संरक्षित करें, जिसका आपको उपयोग करना चाहिए:
df.reset_index().set_index('index', drop=False)
या इसे जगह में बदलने के लिए:
df.reset_index(inplace=True)
df.set_index('index', drop=False, inplace=True)
उदाहरण के लिए:
print(df)
gi ptt_loc
0 384444683 593
4 384444684 594
9 384444686 596
print(df.reset_index())
index gi ptt_loc
0 0 384444683 593
1 4 384444684 594
2 9 384444686 596
print(df.reset_index().set_index('index', drop=False))
index gi ptt_loc
index
0 0 384444683 593
4 4 384444684 594
9 9 384444686 596
और यदि आप इंडेक्स लेबल से छुटकारा पाना चाहते हैं तो आप कर सकते हैं:
df2 = df.reset_index().set_index('index', drop=False)
df2.index.name = None
print(df2)
index gi ptt_loc
0 0 384444683 593
4 4 384444684 594
9 9 384444686 596
df1 = pd.DataFrame({"gi":[232,66,34,43],"ptt":[342,56,662,123]})
p = df1.index.values
df1.insert( 0, column="new",value = p)
df1
new gi ptt
0 0 232 342
1 1 66 56
2 2 34 662
3 3 43 123
इसे करने का एक बहुत ही सरल तरीका है रीसेट_इंडेक्स () विधि का उपयोग करना। डेटा कोड के लिए df नीचे दिए गए कोड का उपयोग करें:
df.reset_index(inplace=True)
इस तरह, इंडेक्स एक कॉलम बन जाएगा, और इनकम को ट्रू के रूप में उपयोग करके, यह स्थायी परिवर्तन बन जाएगा।