來源:AI入門學習作者:小伍哥pandas中的map類似於Python內建的map()方法,pandas中的map()方法將函數、字典索引或是一些需要接受單個輸入值的特別的物件與對應的單個列的每一個
2021-07-29 03:15:25
來源:AI入門學習
作者:小伍哥
pandas中的map類似於Python內建的map()方法,pandas中的map()方法將函數、字典索引或是一些需要接受單個輸入值的特別的物件與對應的單個列的每一個元素建立聯絡並序列得到結果。
這裡我們想要得到gender列的F、M轉換為女性、男性的新列,可以有以下幾種實現方式先構造一個數據集
map()函數可以用於Series物件或DataFrame物件的一列,接收函數作為或字典物件作為參數,返回經過函數或字典對映處理後的值。
用法:Series.map(arg, na_action=None)
參數:
arg : function, dict, or Series
Mapping correspondence.
na_action : {None, ‘ignore’}, default None
If ‘ignore’, propagate NaN values, without passing them to the mapping
correspondence.
返回:Pandas Series with same as index as caller
官方:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html
首先構建一個數據集,下面進行案例應用
data = pd.DataFrame({"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],"age":[25, 34, 49, 42, 28, 23, 45, 21, 34, 29]} ) data name gender age0 Jack F 251 Alice M 342 Lily F 493 Mshis F 424 Gdli M 285 Agosh F 236 Filu M 457 Mack M 218 Lucy F 349 Pony F 29
這裡我們編寫F、M與女性、男性之間一一對映的字典,再利用map()方法來得到對映列:
#定義F->女性,M->男性的對映字典gender2xb = {'F': '女性', 'M': '男性'}#利用map()方法得到對應gender列的對映列data.gender.map(gender2xb)0 女性1 男性2 女性3 女性4 男性5 女性6 男性7 男性8 女性9 女性
這裡我們向map()中傳入lambda函數來實現所需功能:
#因為已經知道資料gender列性別中只有F和M所以編寫如下lambda函數
data.gender.map(lambda x:'女性' if x == 'F' else '男性')0 女性1 男性2 女性3 女性4 男性5 女性6 男性7 男性8 女性9 女性#年齡的平方data.age.map(lambda x: x**2)0 6251 11562 24013 17644 7845 5296 20257 4418 11569 84
map函數,也可以傳入通過def定義的常規函數,看看下面的案例
#性別轉換def gender_to_xb(x): return '女性' if x == 'F' else '男性' data.gender.map(gender_to_xb)0 女性1 男性2 女性3 女性4 男性5 女性6 男性7 男性8 女性9 女性
map()可以傳入的內容有時候可以很特殊,如下面的例子:一些接收單個輸入值且有輸出的物件也可以用map()方法來處理:
data.gender.map("This kid's gender is {}".format)0 This kid's gender is F1 This kid's gender is M2 This kid's gender is F3 This kid's gender is F4 This kid's gender is M5 This kid's gender is F6 This kid's gender is M7 This kid's gender is M8 This kid's gender is F9 This kid's gender is F
map()中的參數na_action,類似R中的na.action,取值為None或ingore,用於控制遇到缺失值的處理方式,設定為ingore時序列運算過程中將忽略Nan值原樣返回。
s = pd.Series(['cat', 'dog', np.nan, 'rabbit']) s0 cat1 dog2 NaN3 rabbit
na_action為預設值的情況
s.map('I am a {}'.format)0 I am a cat1 I am a dog2 I am a nan3 I am a rabbit
na_action為ignore的情況
s.map('I am a {}'.format, na_action='ignore')0 I am a cat1 I am a dog2 NaN3 I am a rabbit
相關文章
來源:AI入門學習作者:小伍哥pandas中的map類似於Python內建的map()方法,pandas中的map()方法將函數、字典索引或是一些需要接受單個輸入值的特別的物件與對應的單個列的每一個
2021-07-29 03:15:25
首屆「青年科學家50論壇」將於8月1日在位於深圳的南方科技大學隆重開幕。「青年科學家50論壇」是為「科學探索獎」獲獎人提供的高水平、跨學科學術交流平臺,並在此向公眾展示
2021-07-29 03:15:17
明敏 發自 凹非寺量子位 報道 | 公眾號 QbitAI上一秒收到「XX信貸」的詐騙簡訊,下一秒警察蜀黍的溫馨提醒就到了。如此迅速的出警速度,這背後其實還有AI默默助力。只要NLP識別
2021-07-29 03:15:13
當使用計算機觀看電影或收聽音樂時,很多人更喜歡插入耳機來聽,所以聲音是三維,外部干擾相對較小。但是,如果有些網友反映他們的Win7耳機,則沒有聲音,如何解決Win7電腦耳機的問題而
2021-07-29 03:15:03
realme真我GT大師探索版於7月27日正式開售,如今官方已經公佈了首銷資料。開售僅1秒,銷售額就已破億。截止開售日上午9:30,真我GT大師探索版斬獲線上全平臺銷量/銷售額雙冠軍,呈
2021-07-29 03:14:47
儘管自 2001 年以來,C++ 在 TIOBE 程式設計社群指數榜上逐漸呈現出了一個下滑趨勢,甚至有人覺得 C++ 已經像 COBOL 一樣「死了」。但 SDTimes 認為,C++ 仍然像以前一樣有生命力
2021-07-29 03:14:42