apply,map,applymap總結

王__12發表於2018-09-03

Python中apply,map,applymap總結

pandas中DataFrame 資料型別,使用map,apply方法使用較多,做一下總結。參考https://www.cnblogs.com/cymwill/p/7577369.html

總結:

  • apply 用在dataframe上,用於對row或者column進行計算;
  • applymap 用於dataframe上,是元素級別的操作;
  • map (其實是python自帶的)用於series上,是元素級別的操作。
df = pd.DataFrame(np.random.randint(0,10,(4, 3)), columns=list(`bde`), index=range(4))
df
    b    d    e
0    4    9    3
1    3    1    0
2    4    8    0
3    2    9    9

apply:作用在dataframe的一行或一列上,也可以作用在series上

定義一個函式,

f = lambda x: x.max() - x.min()

這個函式可以結合apply作用在DataFrame型別的行或者列上

# 和加上axis = 0 ,預設是作用在列上
df.apply(f)
b    2
d    8
e    9
dtype: int64
    
# axis = 1 ,預設是作用在行上
df.apply(f,axis =1)
0    6
1    3
2    8
3    7
dtype: int64

關於apply 傳入多引數

def test(a,b):
    return a,b
df[`d`].apply(test,args=(`ok`,))
# args只能傳入(元組)
0    (9, ok)
1    (1, ok)
2    (8, ok)
3    (9, ok)
Name: d, dtype: object

applymap: 作用在dataframe的每一個元素上

定義f2函式

f2 = lambda x: x+1 if x%2==0 else x

applymap 會將函式作用在DataFrame每一個元素上

df.applymap(f2)
    b    d    e
0    5    9    3
1    3    1    1
2    5    9    1
3    3    9    9

map:作用將函式作用於一個Series的每一個元素

df[`b`].map(f2)
0    5
1    3
2    5
3    3
Name: b, dtype: int64


相關文章