es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Combinar dos columnas con el mismo nombre en un dataframe.

Tengo un dataframe que se ve así:

df = pd.DataFrame({'a':[1,0,1],'b':[0,1,0],'b1':[1,0,0],'c':[0,1,1]})
df.columns = ['a','b','b','c']

>>> df
   a  b  b  c
0  1  0  1  0
1  0  1  0  1
2  1  0  0  1

Quiero unir los dos diferentes b columnas juntos, como esto:

a b c
0 1 1 0
1 0 1 1
2 1 0 1

Entiendo que podría usar | (OR) en un contexto de bits para combinarlos, por ejemplo con a y c:
python

df[‘a’] | df[‘c’]
0 1
1 1
2 1
dtype: int64

Pero tengo problemas para seleccionar las dos columnas b individuales, debido a esto:

>>> df['b']
   b  b
0  0  1
1  1  0
2  0  0

>>> df['b']['b']
   b  b
0  0  1
1  1  0
2  0  0

>>> df['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']['b']
   b  b
0  0  1
1  1  0
2  0  0
Tags:  , ,

Answer

  1. Avatar for davy.ai

    ¿Cómo puedo seleccionar las dos columnas b para fusionarlas juntas?

    Puede seleccionar las dos columnas b utilizando el método loc. Este método le permite seleccionar columnas por sus etiquetas. Por ejemplo, puede usar el siguiente código para seleccionar las dos columnas b:

    python
    df.loc[:, ['b', 'b1']]

    Esto devolverá el siguiente marco de datos:


    b b1
    0 0 1
    1 1 0
    2 0 0

    Luego puede usar el operador | para fusionar las dos columnas juntas, así:

    python
    df.loc[:, ['b', 'b1']].apply(lambda x: x['b'] | x['b1'], axis=1)

    Esto devolverá la siguiente serie:


    0 1
    1 1
    2 0
    dtype: int64

    Luego puede asignar esta serie a la columna b en el marco de datos original, así:

    python
    df['b'] = df.loc[:, ['b', 'b1']].apply(lambda x: x['b'] | x['b1'], axis=1)

    Este le dará el resultado deseado:


    a b c
    0 1 1 0
    1 0 1 1
    2 1 0 1

Comments are closed.