pandas修改DataFrame列名的實(shí)現(xiàn)方法
提出問題
存在一個(gè)名為dataset的DataFrame
>>> dataset.columns
Index(['age', 'job', 'marital', 'education', 'default', 'housing', 'loan',
'contact', 'month', 'day_of_week', 'duration', 'campaign', 'pdays',
'previous', 'poutcome', 'emp.var.rate', 'cons.price.idx',
'cons.conf.idx', 'euribor3m', 'nr.employed', 'y'],
dtype='object')
現(xiàn)在, 我要將其columns名字改為:
>>> new_columns
Index(['age_0', 'job_1', 'marital_2', 'education_3', 'default_4', 'housing_5',
'loan_6', 'contact_7', 'month_8', 'day_of_week_9', 'duration_10',
'campaign_11', 'pdays_12', 'previous_13', 'poutcome_14',
'emp.var.rate_15', 'cons.price.idx_16', 'cons.conf.idx_17',
'euribor3m_18', 'nr.employed_19', 'y_20'],
dtype='object')
該如何操作?
解決
一.通過DataFrame.columns類的自身屬性修改:
1.無腦賦值直接修改
>>> # 先解決`new_columns`的推導(dǎo)問題 >>> # 列表推導(dǎo) >>> new_columns_list = [column_str+'_'+str(i) for i ,column_str in enumerate(dataset.columns)] >>> # 類型轉(zhuǎn)換 >>> new_columns = pd.core.indexes.base.Index(new_columns_list) >>> dataset.columns = new_columns
2.通過.map(mapper, na_action=None)函數(shù)來修改
>>> # 注:mapper 多運(yùn)用 lambda 表達(dá)式 >>> # 但我似乎沒有找到在 lambda 表達(dá)式中改變兩個(gè)值的方法 >>> # 所以只能蹩腳地用一個(gè)全局變量i, 和映射函數(shù)mapper() >>> # 希望大家能幫我找到方法 >>> i = 0 >>> def mapper(x): # 映射函數(shù)即 mapper global i x += '_' + str(i) i += 1 return x >>> dataset.columns.map(mapper)
3.參考博客用到了DataFrame.columns.str對象
用help(DataFrame.columns.str)翻遍了文檔,
也沒能找到可以被我拿來套用的方法, 想著抽時(shí)間把這段文檔翻譯一下
二.通過DataFrame.rename()函數(shù)來修改
1.暴力字典法(好處:可以只修改特定的列)
>>> # 此處先用字典推導(dǎo)法
>>> new_dict = {
key:key+'_'+str(i)
for i, key in enumerate(dataset.columns)
}
>>> dataset.rename(columns=new_dict, inplace=True)
2.映射修改法
>>> # 原博文依然用到了 lambda 表達(dá)式 >>> # 我就再生搬硬套一次, 把上面的復(fù)制過來 >>> # 蹩腳地用一個(gè)全局變量i, 和映射函數(shù)mapper() >>> i = 0 >>> def mapper(x): # 映射函數(shù)即 mapper global i x += '_' + str(i) i += 1 return x dataset.rename(columns=mapper, inplace=True)
稍微總結(jié)一下 : 字典推導(dǎo)和列表推導(dǎo)的使用方法很類似, 最大的區(qū)別是選擇中括號還是大括號
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python算法測試結(jié)果自動(dòng)保存到excel表格的實(shí)現(xiàn)步驟
我們在進(jìn)行算法評估是通常會針對每個(gè)樣本的算法處理結(jié)果進(jìn)行統(tǒng)計(jì),例如每個(gè)樣本正確預(yù)測數(shù)量、漏檢數(shù)量和誤檢數(shù)量、精度等,本文小編將給大家介紹python算法測試結(jié)果自動(dòng)保存到excel表格的實(shí)現(xiàn)步驟,感興趣的朋友可以參考下2023-12-12
Django 導(dǎo)出 Excel 代碼的實(shí)例詳解
本篇文章主要介紹了Django 導(dǎo)出 Excel 代碼的實(shí)例詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
在ubuntu16.04中將python3設(shè)置為默認(rèn)的命令寫法
這篇文章主要介紹了在ubuntu16.04中將python3設(shè)置為默認(rèn)python的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-10-10
Python標(biāo)準(zhǔn)庫使用OrderedDict類的實(shí)例講解
今天小編就為大家分享一篇關(guān)于Python標(biāo)準(zhǔn)庫使用OrderedDict類的實(shí)例講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
在Tensorflow中查看權(quán)重的實(shí)現(xiàn)
今天小編就為大家分享一篇在Tensorflow中查看權(quán)重的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
利用Python?實(shí)現(xiàn)分布式計(jì)算
這篇文章主要介紹了利用Python?實(shí)現(xiàn)分布式計(jì)算,文章通過借助于?Ray展開對分布式計(jì)算的實(shí)現(xiàn),感興趣的小伙伴可以參考一下2022-05-05
python利用pymysql和openpyxl實(shí)現(xiàn)操作MySQL數(shù)據(jù)庫并插入數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了如何使用Python連接MySQL數(shù)據(jù)庫,并從Excel文件中讀取數(shù)據(jù),將其插入到MySQL數(shù)據(jù)庫中,有需要的小伙伴可以參考一下2023-10-10
Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)列表與元組示例詳解
這篇文章主要給大家介紹了關(guān)于Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)列表與元組的相關(guān)資料,列表是順序存儲的數(shù)據(jù)結(jié)構(gòu),類似于數(shù)據(jù)結(jié)構(gòu)中的順序表,在存儲上是相連的一大塊內(nèi)存空間,在物理和邏輯上都是連續(xù)的,需要的朋友可以參考下2021-08-08

