मैं पंडों में एक विशिष्ट स्तंभ का नाम कैसे बदलूं?
V0.24 + से, एक समय में एक (या अधिक) कॉलम का नाम बदलने के लिए,
यदि आपको एक ही बार में सभी स्तंभों का नाम बदलने की आवश्यकता है,
DataFrame.set_axis()
के साथ विधि axis=1
। सूची जैसा क्रम दें। इन-प्लेस संशोधन के लिए भी विकल्प उपलब्ध हैं।
rename
साथ में axis=1
df = pd.DataFrame('x', columns=['y', 'gdp', 'cap'], index=range(5))
df
y gdp cap
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
0.21+ के साथ, अब आप एक axis
पैरामीटर निर्दिष्ट कर सकते हैं rename
:
df.rename({'gdp':'log(gdp)'}, axis=1)
# df.rename({'gdp':'log(gdp)'}, axis='columns')
y log(gdp) cap
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
(ध्यान दें कि rename
डिफ़ॉल्ट रूप से इन-प्लेस नहीं है, इसलिए आपको परिणाम वापस असाइन करने की आवश्यकता होगी ।)
बाकी एपीआई के साथ निरंतरता को बेहतर बनाने के लिए यह जोड़ा गया है। नया axis
तर्क columns
पैरामीटर के अनुरूप है -वे एक ही काम करते हैं।
df.rename(columns={'gdp': 'log(gdp)'})
y log(gdp) cap
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
rename
एक कॉलबैक को भी स्वीकार करता है जिसे प्रत्येक कॉलम के लिए एक बार कहा जाता है।
df.rename(lambda x: x[0], axis=1)
# df.rename(lambda x: x[0], axis='columns')
y g c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
इस विशिष्ट परिदृश्य के लिए, आप उपयोग करना चाहेंगे
df.rename(lambda x: 'log(gdp)' if x == 'gdp' else x, axis=1)
करने के लिए इसी तरह के replace
अजगर में तार की विधि, पांडा सूचकांक और श्रृंखला (वस्तु dtype केवल) एक ( "vectorized") को परिभाषित str.replace
स्ट्रिंग और regex आधारित प्रतिस्थापन के लिए विधि।
df.columns = df.columns.str.replace('gdp', 'log(gdp)')
df
y log(gdp) cap
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
अन्य तरीकों पर इसका लाभ यह है कि str.replace
रेगेक्स (डिफ़ॉल्ट रूप से सक्षम) का समर्थन करता है। अधिक जानकारी के लिए डॉक्स देखें।
के set_axis
साथ एक सूची पास करनाaxis=1
set_axis
हेडर की सूची के साथ कॉल करें । सूची की लंबाई कॉलम / इंडेक्स आकार के बराबर होनी चाहिए। set_axis
मूल DataFrame को डिफ़ॉल्ट रूप से बदल देता है, लेकिन आप inplace=False
एक संशोधित प्रतिलिपि वापस करने के लिए निर्दिष्ट कर सकते हैं ।
df.set_axis(['cap', 'log(gdp)', 'y'], axis=1, inplace=False)
# df.set_axis(['cap', 'log(gdp)', 'y'], axis='columns', inplace=False)
cap log(gdp) y
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
नोट: भविष्य के रिलीज़ में, inplace
डिफ़ॉल्ट रूप से होगा True
।
विधि जंजीर जब हम पहले से ही कॉलम निर्दिष्ट करने का एक कुशल तरीका है तो
क्यों चुनें ? जैसा कि टेड पेट्रो द्वारा दिखाया गया है [यह उत्तर], ( https://stackoverflow.com/a/46912050/4909087 ) श्रृंखला विधियों की कोशिश करते समय उपयोगी है।set_axis
df.columns = ...
set_axis
तुलना
# new for pandas 0.21+
df.some_method1()
.some_method2()
.set_axis()
.some_method3()
बनाम
# old way
df1 = df.some_method1()
.some_method2()
df1.columns = columns
df1.some_method3()
पूर्व अधिक प्राकृतिक और मुक्त प्रवाह वाक्यविन्यास है।