它們的區別就在於應用對象的不同
1、map
map()是Series對象的一個函數,DataFrame中沒有map(),map()的功能是將一個自定義函數作用於Series對象的每個元素。
eg:
1 frame = pd.DataFrame({
'key1':['a','b','c','d'],
'key2':['one','two','three','four'],
'data1':np.arange(4),
'data2':np.arange(5,9)
})
2 df
現在使用map()函數來將data1這一列的數據改為保留三位小數顯示
1 df['data1'] = df['data1'].map(lambda x : "%.3f"%x)
運行結果:
2、apply
apply()函數的功能是將一個自定義函數作用於DataFrame的行或者列
eg:現在使用apply()對data1和data2相加
df['total'] = df[['data1','data2']].apply(lambda x : x.sum(), axis = 1)
運行結果:
df.loc['total'] = df[['data1','data2']].apply(lambda x : x.sum(), axis = 0) #注意索引行必須用loc
3、applymap
applymap()函數的功能是將自定義函數作用於DataFrame的所有元素
eg:現在將DataFrame的所有元素前面加字符#
1 def add(n): 2 return '#' + str(n) 3 df.applymap(add)
運行結果:
容易發現,DataFrame對象的一行或者一列可以看成一個Series對象,因此也適用map()函數,幾個對象之間可以互相轉化,注意靈活使用。