python pandas的map函數(shù)使用
前言
大家在使用pandas的時候,大部分可能就是一些匹配關(guān)系,主要也就是使用merge函數(shù)之類的。
但是有時候在匹配的時候,并不需要使用merge的函數(shù),使用別的函數(shù)也是可以做到,今天也就是給大家分享一個找BOSS的代碼。
問題
有這樣的一個數(shù)據(jù),這個數(shù)據(jù)的第一列是員工的ID,第二列是員工的Name,第三列是這個員工所屬的直接部門,第四列代表這個員工所屬的上級部門。
那么我要想找到員工的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', '二級部門', '一級部門'])
df

解決方案
很多人可能想到,這樣的問題就很簡單了,直接使用merge做數(shù)據(jù)合并的操作。也就是所謂的我自己合并我自己。
這里提供兩個方案,使用pandas的map函數(shù)或者replace函數(shù)就可以優(yōu)雅的解決我們的難題,代碼也是超級簡單。
1 使用map函數(shù)
df['Boss'] = df['一級部門'].map(df.set_index('二級部門')['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', '二級部門', '一級部門'])
# 使用repalce函數(shù)
df['Boss'] = df['一級部門'].replace(df.set_index('二級部門')['Name'])
df

函數(shù)介紹
map函數(shù)介紹
根據(jù)輸入關(guān)系映射對應(yīng)Series的值。
說白了,map函數(shù)就是將一列數(shù)據(jù)(DataFrame的一列 或者一個pd.Series)按照一個參考數(shù)據(jù)(Dict或者是pd.Series或者是一個函數(shù))做數(shù)值的映射關(guān)系。
下面就是創(chuàng)建了一個df,這個df是只含有一個id列。
然后創(chuàng)建一個索引叫index1,這個索引的值分別對應(yīng)a, b, c,索引的鍵分別是100,101,102。

使用map函數(shù)就可以幫助df的id列找到對應(yīng)的名字。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
參考鏈接:
相關(guān)文章
Python使用tablib生成excel文件的簡單實現(xiàn)方法
這篇文章主要介紹了Python使用tablib生成excel文件的方法,結(jié)合實例形式分析了tablib模塊的相關(guān)使用技巧,需要的朋友可以參考下2016-03-03
解決python腳本中error: unrecognized arguments: True錯誤
這篇文章主要介紹了解決python腳本中error: unrecognized arguments: True錯誤,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
詳解使用Selenium爬取豆瓣電影前100的愛情片相關(guān)信息
這篇文章主要介紹了詳解使用Selenium爬取豆瓣電影前100的愛情片相關(guān)信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
linux環(huán)境下的python安裝過程圖解(含setuptools)
這篇文章主要介紹了linux環(huán)境下的python安裝過程圖解(含setuptools),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

