pandas中的apply、map、applymap都是利用lambda函数对DataFrame中的数据进行处理,几个方法之间的异同如下:
1.dataframe使用apply方法:
import pandas as pd
df = pd.DataFrame({'a':[5,8,3], 'b':[8,3,4], 'c':[6,2,7]})
result_se = df.apply(lambda x:sum(x))
result_se输出结果:
根据输出结果result_se可以看出,在对dataframe使用apply方法后返回一个series,返回后的series以dataframe的列明为索引。
2.series使用apply方法:
import pandas as pd
df = pd.DataFrame({'a':[5,8,3], 'b':[8,3,4], 'c':[6,2,7]})
result_se = df.a.apply(lambda x:1 if x>5 else 0)
result_se输出结果:
根据输出结果可以看出,在对series使用apply方法后返回的结果为对series中每一个元素使用func后的对应值构成的series,返回后的series的索引没有发生改变。
1.series使用map方法:
import pandas as pd
df = pd.DataFrame({'a':[5,8,3], 'b':[8,3,4], 'c':[6,2,7]})
map_dic = {8:'八', 3:'三', 4:'四'}
result_se = df.b.map(map_dic)
result_se输出结果:
根据输出结果可以看出,在对series使用map方法后返回的结果为对series中每一个元素使用map字典映射后的对应值构成的series,返回后的series的索引没有发生改变。
1.dataframe使用applymap方法:
import pandas as pd
df = pd.DataFrame({'a':[5,8,3], 'b':[8,3,4], 'c':[6,2,7]})
result_df = df.applymap(lambda x:1 if x>5 else 0)
result_df输出结果:
根据输出结果可以看出,在对dataframe使用applymap方法后返回的结果为对dataframe中每一个元素使用func后的对应值构成的dataframe,返回后的dataframe的列名及索引均没有发生改变。
1.apply:不论是对dataframe还是series使用apply方法,返回结果均为series,dataframe使用apply方法相当于dataframe根据行或者列进行聚合;series使用apply方法目的是对series中的每个元素进行根据需求进行func处理;
2.map:map方法只能对用于series,其目的是对series中每个元素进行map映射处理;
3.applymap:applymap方法只能对用于dataframe,其目的是对dataframe中每个元素根据需求进行func处理。
【1】:https://pandas.pydata.org/