提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
pandas中apply、map、applymap三个函数的区别以及使用方式
一、apply函数
apply()可以作用在series对象上的每一个元素,对dataframe对象每一行或每一列执行函数
import pandas as pd
data = [[20, 30], [40, 50]]
index = [0, 1]
columns = ['A', 'B']
df = pd.DataFrame(data = data, columns = columns, index = index)
print(df)
print('-----------------------------')
# apply()作用在series对象上的每一个元素
print(type(df['A']))
df['A'] = df['A'].apply(lambda x : x+10)
print(df)
# apply()对dataframe对象上的每一行或每一列进行函数操作
# 进行列求和
df1 = df.apply(lambda x : x.sum(), axis = 0)
print(df1)
print('-----------------------------')
# 进行行求和
df2 = df.apply(lambda x : x.sum(), axis = 1)
print(df2)
A B
0 20 30
1 40 50
-----------------------------
<class 'pandas.core.series.Series'>
A B
0 30 30
1 50 50
A 80
B 80
dtype: int64
-----------------------------
0 60
1 100
dtype: int64
二、map函数
map()只能作用于series对象中的每一个元素,但是map()的参数可以是函数,也可以是字典
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
data = ['男', '女', '男']
index = ['张三', '李四', '王五']
columns = ['性别']
df = pd.DataFrame(data = data, index = index, columns = columns)
print(df)
def f(s):
if(s == '男'):
return 1
else:
return 0
# map中使用函数作为参数
df1 = df['性别'].map(f)
print(df1)
print('----------------------------')
# map中使用字典作为参数
df2 = df['性别'].map({'男' : 1, '女' : 0})
print(df2)
性别
张三 男
李四 女
王五 男
张三 1
李四 0
王五 1
Name: 性别, dtype: int64
----------------------------
张三 1
李四 0
王五 1
Name: 性别, dtype: int64
三、applymap函数
applymap()可以作用于dataframe中的每一个元素,而apply()只能对dataframe中每一行或每一列作函数操作
import pandas as pd
data = [[20, 30], [40, 50]]
index = [0, 1]
columns = ['A', 'B']
df = pd.DataFrame(data = data, columns = columns, index = index)
print(df)
print('------------------')
df = df.applymap(lambda x : x+20)
print(df)
A B
0 20 30
1 40 50
------------------
A B
0 40 50
1 60 70
总结
apply可以作用于series对象中每一个元素,dataframe对象中的行或列操作
map仅可以作用于series对象,参数可以是字典或者函数
applymap可以作用于dataframe对象中的每一个元素
注意
apply和applymap对dataframe对象的作用和使用方式不同