apply和transform的不同

transform和apply的三点区别:

(3) transform() 使用函数、字符串函数、函数列表和字典。 但是, apply() 只允许与函数一起使用。
(2) transform() 不能使用聚合函数,apply() 能使用聚合。
(1) apply() 一次处理多维(列)。 但是,transform() 一次只能处理单维(列)。


(1):

apply() 一次处理多维(列)。 但是transform() 一次只能处理单维(列)。
数据代码:

def subtract_two(x):
    return x['B'] - x['A']
df.apply(subtract_two, axis=1) #正确
df.transform(subtract_two, axis=1) #报错
#ValueError: transforms cannot produce aggregated results

(2):

transform不能使用聚合函数。
数据代码:

def subtract_two(x):
    return x['B'] - x['A']
df.apply(lambda x:x.sum()) #正确
df.transform(lambda x:x.sum()) #报错
#ValueError: transforms cannot produce aggregated results #报错

(3):

transform() 使用函数、字符串函数、函数列表和字典。 但是, apply() 只允许与函数一起使用。
数据代码:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1,2,3], 'B': [10,20,30] })

def plus_10(x):
    return x+10

df['B_ap'] = df['B'].apply(plus_10)
# The lambda equivalent
df['B_ap'] = df['B'].apply(lambda x: x+10)
df['B_tr'] = df['B'].transform(plus_10)
# The lambda equivalent
df['B_tr'] = df['B'].transform(lambda x: x+10)

display(df.transform(['sqrt','exp']))

display(df.transform([np.sqrt, np.exp]))

display(df.transform({'A': np.sqrt,'B': np.exp,}))

apply和transform的不同_第1张图片


你可能感兴趣的:(pandas)