Decir que tengo este array:

A, B
1, G
2, X
3, F
4, Z
5, I

Si la columna B es igual a [X, Y o Z] vuelva a colocar la columna con el valor de «T»

He encontrado la forma de cambiar los valores dentro de la misma columna, pero no a través de, cualquier ayuda sería muy apreciada.

OriginalEl autor Tristan Forward | 2014-09-17

2 Comentarios

  1. 15

    Que usted puede probar esto:

    import pandas as pd
    df = pd.DataFrame({
            'A': [1, 2, 3, 4, 5],
            'B': ['G', 'X', 'F', 'Z', 'I']
         })
    df.ix[df.B.isin(['X','Y','Z']), 'A'] = 'T'
    print df

    De salida:

       A  B
    0  1  G
    1  T  X
    2  3  F
    3  T  Z
    4  5  I

    Recuerde usar ix o loc para evitar el establecimiento de los valores en una copia de la rebanada.

    OriginalEl autor YS-L

  2. 5

    Uso isin y loc para establecer el valor:

    In [138]:
    
    df.loc[df.B.isin(['X','Y','Z']),'A']='T'
    df
    Out[138]:
       A  B
    0  1  G
    1  T  X
    2  3  F
    3  T  Z
    4  5  I

    También puede utilizar np.where:

    In [140]:
    
    df['A'] = np.where(df.B.isin(['X','Y','Z']),'T', df['A'])
    df
    Out[140]:
       A  B
    0  1  G
    1  T  X
    2  3  F
    3  T  Z
    4  5  I
    Creo que el uso de iPython. Sabes por casualidad el timeit diferencias entre estos?
    loc en este juguete ejemplo tomó 915 nosotros, donde tuvo 615us, por lo que en este caso donde es 30% más rápido
    para una 50,000 fila df loc es ligeramente más rápido 9.27 ms vs 11.2 ms
    Gracias! Tener un voto.

    OriginalEl autor EdChum

Dejar respuesta

Please enter your comment!
Please enter your name here