日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:非昨 ? 更新時間: 2022-10-10 編程語言

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沒在索引內

原文鏈接:https://blog.csdn.net/lisnyuan/article/details/106802431

欄目分類
最近更新