1. 程式人生 > >【Pandas】apply,applymap和map的區別

【Pandas】apply,applymap和map的區別

結論

  • apply:用在dataframe上,用於對row或者column進行計算;
  • applymap:用於dataframe上,是元素級別的操作;
  • map:(其實是python自帶的)用於series上,是元素級別的操作。

apply函式

apply函式:pandas裡面所有函式中自由度最高的函式。該函式如下:

DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)

該函式最有用的是第一個引數,這個引數是函式,相當於C/C++的函式指標。

這個函式需要自己實現,函式的傳入引數根據 axis 來定,比如 axis = 1,就會把一行資料作為Series的資料
結構傳入給自己實現的函式中,我們在函式中實現對Series不同屬性之間的計算,返回一個結果,則apply函式
會自動遍歷每一行DataFrame的資料,最後將所有結果組合成一個Series資料結構並返回。

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], }) print(df1) print(df1.apply(lambda x :x.max()-x.min(),axis=1)) # 0 4 # 1 7 # 2 4 # dtype: int64 print(df1.apply(lambda x :x.max()-x.min(),axis=0)) # sales1 4 # sales2 12 # dtype: int64

在這裡插入圖片描述

applymap函式

當我們要對資料框(DataFrame)的每一個數據進行操作時用applymap(),返回結果是DataFrame格式

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

在這裡插入圖片描述

map函式

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

df1.sales1.map(lambda x : 1 if x>0 else 0)

輸出結果

# 0    0
# 1    1
# 2    1
# Name: sales1, dtype: int64