python里的apply,applymap和map的區別


轉自:https://www.cnblogs.com/cymwill/p/7577369.html

https://blog.csdn.net/qq_42665335/article/details/81213175

apply,applymap和map的應用
總結:

apply 用在dataframe上,用於對row或者column進行計算;
(有些地方發現對於series類型數據應用apply也可以,???)

applymap 用於dataframe上,是元素級別的操作;

map (其實是python自帶的)用於series上,是元素級別的操作。

在Python中如果想要對數據使用函數,可以借助apply(),applymap(),map() 來應用函數,括號里面可以是直接函數式,或者自定義函數(def)或者匿名函數(lambad)。

import pandas as pd
import numpy as np
from pandas import DataFrame
from pandas import Series
df1= DataFrame({
"sales1":[-1,2,3],
"sales2":[3,-5,7],
})
df1


1、當我們要對數據框(DataFrame)的數據進行按行或按列操作時用apply()

df1.apply(lambda x :x.max()-x.min(),axis=1)
#axis=1,表示按行對數據進行操作
#從下面的結果可以看出,我們使用了apply函數之后,系統自動按行找最大值和最小值計算,每一行輸出一個值
0 4
1 7
2 4
dtype: int64
df1.apply(lambda x :x.max()-x.min(),axis=0)
#默認參數axis=0,表示按列對數據進行操作
#從下面的結果可以看出,我們使用了apply函數之后,系統自動按列找最大值和最小值計算,每一列輸出一個值
sales1 4
sales2 12
dtype: int64
2、當我們要對數據框(DataFrame)的每一個數據進行操作時用applymap(),返回結果是DataFrame格式

df1.applymap(lambda x : 1 if x>0 else 0)
#從下面的結果可以看出,我們使用了applymap函數之后,
#系統自動對每一個數據進行判斷,判斷之后輸出結果


3、當我們要對Series的每一個數據進行操作時用map()

df1.sales1.map(lambda x : 1 if x>0 else 0)
#df1.sales1就是一個Series
0 0
1 1
2 1
Name: sales1, dtype: int64
4、總結:要對數據進行應用函數時,先看數據結構是DataFrame還是Series,Seriesj結構直接用map(),DataFrame結構的話再看是要按行還是按列進行操作來選擇對應的函數即可~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM