首頁 > 軟體

pandas中df.rename()的具體使用

2022-08-15 18:02:08

df.rename()用於更改行列的標籤,即行列的索引。可以傳入一個字典或者一個函數。在資料預處理中,比較常用。

官方檔案:

DataFrame.rename(self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore’)

引數解釋:

建立範例

import pandas as pd 
df = pd.DataFrame({'name':['zhao','qian','sun','wang'],'mark':[150,122,155,132],'gender':['female','female','male','male']})
df

    name    mark    gender
0    zhao    150        female
1    qian    122        female
2    zhou    155        male
3    wang    132        male

mapper:dict or function

對映關係,可以是字典,也可以是一個函數。

df.rename({0:111})
    name    mark    gender
111    zhao    150        female #行索引從0變為111
1    qian    122        female
2    zhou    155        male
3    wang    132        male

df.rename(lambda x: x+11) #引數也可以是函數,索引都加了11
    name    mark    gender
11    zhao    150        female
12    qian    122        female
13    zhou    155        male
14    wang    132        male

index、columns、axis:

這3個引數作用類似,dataframe中有行和列兩個方向,在改名時,需要指明改名的是行還是列(預設是行),使用df.rename(index = mapper)或者df.rename(columns=mapper)的形式,和df.rename(mapper,axis=0 or 1)的效果是一樣的

df.rename(lambda x: x+'11',axis=1)
    name11    mark11    gender11  #列索引都加了11,name變為name11
0    zhao    150        female
1    qian    122        female
2    zhou    155        male
3    wang    132        male

df.rename(columns=lambda x: x+'11')#等價於上面,寫法更簡潔直觀
    name11    mark11    gender11
0    zhao    150        female
1    qian    122        female
2    zhou    155        male
3    wang    132        male

copy:bool,default = True

預設為True,效果不清楚。。。檔案就一句話,與會複製底層資料(also copy underlying data), 等一個課代表解答一下。

inplace:bool,default False

將結果返回賦值給原變數,無需再次將結果賦值給新變數。即df.rename(inplace=True)之後,df的值發生改變(pandas中好多方法都有這個引數,此處就演示了)

level int,level name,default none

針對多層索引,指定需要改名字的索引具體是哪一個。

df1 = pd.DataFrame([10,11,12,13],index=[['a','a','b','b'],[1,2,3,4],[4,3,2,1]],columns=['tt'])
df1
            tt #前三列都為索引
a    1    4    10
    2    3    11
b    3    2    12
    4    1    13
    
df1.rename(index={1:'dd'})
            tt#索引中所有的1都變成了dd
a    dd    4    10
    2    3    11
b    3    2    12
    4    dd    13
    
df1.rename(index={1:'dd'},level=1)
            tt#只有第2列索引改為dd(從0開始計數)
a    dd    4    10
    2    3    11
b    3    2    12
    4    1    13

errors:{‘ignore’, ‘raise’}, default ‘ignore’

發生錯誤的處理方式,ignore為忽略,raise為報錯。比如改名字是,如果傳入的引數中包含索引列沒有的值,就會報錯,ignore或者raise來決定錯誤的處理方式

df1
            tt #前三列都為索引
a    1    4    10
    2    3    11
b    3    2    12
    4    1    13
    
df1.rename(index={11:'dd'},level=1,errors='raise')
KeyError: '[11] not found in axis'#報錯,11沒在索引內

到此這篇關於pandas中df.rename()的具體使用的文章就介紹到這了,更多相關pandas df.rename()內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com