python pandas的map函數(shù)使用
前言
大家在使用pandas的時(shí)候,大部分可能就是一些匹配關(guān)系,主要也就是使用merge函數(shù)之類的。
但是有時(shí)候在匹配的時(shí)候,并不需要使用merge的函數(shù),使用別的函數(shù)也是可以做到,今天也就是給大家分享一個(gè)找BOSS的代碼。
問(wèn)題
有這樣的一個(gè)數(shù)據(jù),這個(gè)數(shù)據(jù)的第一列是員工的ID,第二列是員工的Name,第三列是這個(gè)員工所屬的直接部門,第四列代表這個(gè)員工所屬的上級(jí)部門。
那么我要想找到員工的boss應(yīng)該怎么辦?
數(shù)據(jù)代碼如下:
import pandas as pd import numpy as np df = pd.DataFrame(np.array([[1000, 'Jerry', 'BR1','BR1'], [1001, 'Sal', 'BR2', 'BR1'], [1002, 'Buck', 'BR3', 'BR2'], [1003, 'Perry','BR4','BR1']]), columns=['ID', 'Name', '二級(jí)部門', '一級(jí)部門']) df
解決方案
很多人可能想到,這樣的問(wèn)題就很簡(jiǎn)單了,直接使用merge做數(shù)據(jù)合并的操作。也就是所謂的我自己合并我自己。
這里提供兩個(gè)方案,使用pandas的map函數(shù)或者replace函數(shù)就可以優(yōu)雅的解決我們的難題,代碼也是超級(jí)簡(jiǎn)單。
1 使用map函數(shù)
df['Boss'] = df['一級(jí)部門'].map(df.set_index('二級(jí)部門')['Name']) df
2 使用replace函數(shù)
# 重置df數(shù)據(jù) df = pd.DataFrame(np.array([[1000, 'Jerry', 'BR1','BR1'], [1001, 'Sal', 'BR2', 'BR1'], [1002, 'Buck', 'BR3', 'BR2'], [1003, 'Perry','BR4','BR1']]), columns=['ID', 'Name', '二級(jí)部門', '一級(jí)部門']) # 使用repalce函數(shù) df['Boss'] = df['一級(jí)部門'].replace(df.set_index('二級(jí)部門')['Name']) df
函數(shù)介紹
map函數(shù)介紹
根據(jù)輸入關(guān)系映射對(duì)應(yīng)Series的值。
說(shuō)白了,map函數(shù)就是將一列數(shù)據(jù)(DataFrame的一列 或者一個(gè)pd.Series)按照一個(gè)參考數(shù)據(jù)(Dict或者是pd.Series或者是一個(gè)函數(shù))做數(shù)值的映射關(guān)系。
下面就是創(chuàng)建了一個(gè)df,這個(gè)df是只含有一個(gè)id列。
然后創(chuàng)建一個(gè)索引叫index1,這個(gè)索引的值分別對(duì)應(yīng)a, b, c,索引的鍵分別是100,101,102。
使用map函數(shù)就可以幫助df的id列找到對(duì)應(yīng)的名字。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
參考鏈接:
- https://stackoverflow.com/questions/70456586/pandas-column-from-match-without-merge
- https://pandas.pydata.org/docs/reference/api/pandas.Series.map.html
- Pandas中map(),applymap(),apply()函數(shù)的使用方法
- 詳解Pandas的三大利器(map,apply,applymap)
- pandas map(),apply(),applymap()區(qū)別解析
- pandas使用函數(shù)批量處理數(shù)據(jù)(map、apply、applymap)
- Pandas對(duì)DataFrame單列/多列進(jìn)行運(yùn)算(map, apply, transform, agg)
- 對(duì)pandas中Series的map函數(shù)詳解
- 淺談Pandas中map, applymap and apply的區(qū)別
相關(guān)文章
python,Django實(shí)現(xiàn)的淘寶客登錄功能示例
這篇文章主要介紹了python,Django實(shí)現(xiàn)的淘寶客登錄功能,結(jié)合實(shí)例形式分析了Django框架基于淘寶接口的登錄功能相關(guān)操作技巧,需要的朋友可以參考下2019-06-06python使用分治法實(shí)現(xiàn)求解最大值的方法
這篇文章主要介紹了python使用分治法實(shí)現(xiàn)求解最大值的方法,較為詳細(xì)的分析了分治法的原理與實(shí)現(xiàn)求最大值的方法,需要的朋友可以參考下2015-05-05PyTorch計(jì)算損失函數(shù)對(duì)模型參數(shù)的Hessian矩陣示例
這篇文章主要為大家介紹了PyTorch計(jì)算損失函數(shù)對(duì)模型參數(shù)的Hessian矩陣的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python設(shè)計(jì)模式之命令模式原理與用法實(shí)例分析
這篇文章主要介紹了Python設(shè)計(jì)模式之命令模式,結(jié)合具體實(shí)例形式分析了Python命令模式相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下2019-01-01