Dataframe–apply, transform, agg
- Series.transform( func, axis=0, *args, **kwargs)
- Series.agg( func, axis=0, *args, **kwargs)
- DataFrame.agg( func, axis=0, *args, **kwargs)
df = pd.DataFrame({'A': range(3), 'B': range(1, 4)})
A B
0 0 1
1 1 2
2 2 3
df.transform(lambda x: x + 1)
A B
0 1 2
1 2 3
2 3 4
- agg可以反射调用 ‘sum‘、‘max’、‘min’、'count‘等方法。
- transform可以反射调用,也可以自定义函数,但不能跟自定义的特征交互函数。
- apply只可以自定义函数,包括简单函数以及复杂的特征间的差值函数。
agg()+python内置方法的计算速度最快,其次是transform()+python内置方法。
transform() 方法+自定义函数的组合方法最慢,需要避免使用!
- agg / transform可以反射调用 ‘sum‘、‘max’、‘min’、'count‘等方法,但apply不行。
- apply里面可以自定义函数,包括简单函数以及复杂的特征间的差值函数等(自定义函数+列特征方法调用),但是agg不行。
- transform里面不能跟自定义的特征交互函数,因为transform是基于每一列特征进行操作的。