Puedo usar .map(func) en cualquier columna en el df, como:

df=DataFrame({'a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7]})

df['a']=df['a'].map(lambda x: x > 1)

Yo también podría:

df['a'],df['b']=df['a'].map(lambda x: x > 1),df['b'].map(lambda x: x > 1)

Hay más python el camino para aplicar una función a todas las columnas o toda la trama (sin un bucle)?

  • Simplificar su lambda a lambda x: x > 1
  • Blender — gracias, editado…
  • Sólo apuntar que fuera. Usted realmente no necesita para editar la pregunta original.
InformationsquelleAutor root | 2012-10-05

2 Comentarios

  1. 51

    Si entiendo bien, usted está buscando el applymap método.

    >>> print df
       A  B  C
    0 -1  0  0
    1 -4  3 -1
    2 -1  0  2
    3  0  3  2
    4  1 -1  0
    >>> print df.applymap(lambda x: x>1)
           A      B      C
    0  False  False  False
    1  False   True  False
    2  False  False   True
    3  False   True   True
    4  False  False  False
    • BrenBarn — sí, esto es exactamente lo que yo estaba buscando. no se dieron cuenta de la documentación. gracias.
  2. 3

    De 0.20.0 en adelante, usted puede utilizar transform

    In [578]: df.transform(lambda x: x > 1)
    Out[578]:
           A      B      C
    0  False  False  False
    1  False   True  False
    2  False  False   True
    3  False   True   True
    4  False  False  False
    
    In [579]: df
    Out[579]:
       A  B  C
    0 -1  0  0
    1 -4  3 -1
    2 -1  0  2
    3  0  3  2
    4  1 -1  0

    Y, por esta simplista caso, ¿por qué no usar simplemente df > 1 ?

    In [582]: df > 1
    Out[582]:
           A      B      C
    0  False  False  False
    1  False   True  False
    2  False  False   True
    3  False   True   True
    4  False  False  False

Dejar respuesta

Please enter your comment!
Please enter your name here