El formato de la función es: apply(func,*args,**kwargs)
Propósito: cuando los parámetros de una función existen en una tupla o diccionario, se usa para llamar a la función indirectamente, y los parámetros en la tupla o diccionario se pasan a los parámetros en orden
Análisis: args es una tupla que contiene los parámetros posicionales pasados de acuerdo con los parámetros requeridos por la función. ¿Es un trabalenguas? Significa que si la posición de la función A es A(a=1,b=2), entonces esto la tupla se debe pasar estrictamente de acuerdo con el orden posicional de este parámetro (a=3, b=4), no en el orden de (b=4, a=3) kwargs es un diccionario que contiene parámetros de palabras clave, y args Si no pasado, kwargs debe pasarse, debe dejarse en blanco en lugar de args
El valor de retorno de apply es el valor de retorno de la función func función
def function(a,b):
print(a,b)
apply(function,('good','better'))
apply(function,(2,3+6))
apply(function,('cai','quan'))
apply(function,('cai',),{'b':'caiquan'})
apply(function,(),{'a':'caiquan','b':'Tom'})
#--使用 apply 函数调用基类的构造函数
class Rectangle:
def __init__(self, color="white", width=10, height=10):
print "create a", color, self, "sized", width, "x", height
class RoundedRectangle(Rectangle):
def __init__(self, **kw):
apply(Rectangle.__init__, (self,), kw)
rect = Rectangle(color="green", height=100, width=100)
rect = RoundedRectangle(color="blue", height=20)
Output:
-----------------------------------------------------------------------------------
('good', 'better')
(2, 9)
('cai', 'quan')
('cai', 'caiquan')
('caiquan', 'Tom')
create a green <__main__.Rectangle instance at 0x0678FA08> sized 100 x 100
create a blue <__main__.RoundedRectangle instance at 0x06620468> sized 10 x 20
-----------------------------------------------------------------------------------
La función de aplicación se establece por defecto en el eje como eje = 0
data= [
[1,2,3],
[5,4,1],
[3,2,2]
]
df = pd.DataFrame(data,columns=['A','B','C'])<br>f = lambda x: (x - np.min(x)) / (np.max(x) - np.min(x))
print(df)
A B C
0 1 2 3
1 5 4 1
2 3 2 2
1, eje = 1
df1 = df.copy()
df1 = df1.apply(f,axis=1) #计算的时候取的是行数
df1
A B C
0.0 0.50 1.0
1.0 0.75 0.0
1.0 0.00 0.0
2, eje = 2
df2 = df.copy()
df2 = df2.apply(f,axis=0)
df2
A B C
0 0.0 0.0 1.0
1 1.0 1.0 0.0
2 0.5 0.0 0.5
3. Eje por defecto
df3 = df.copy()
df3 = df3.apply(f)
df3 # 在DataFrame中apply函数默认的是axis=0,取的是列数
A B C
0 0.0 0.0 1.0
1 1.0 1.0 0.0
2 0.5 0.0 0.5
(df['A'] - df['A'].min())/(df['A'].max()-df['A'].min())
0 0.0
1 1.0
2 0.5
Name: A, dtype: float64
Enlace original:
Tome nota para su conveniencia