Tengo este marco de datos:

import pandas as pd
dfX = pd.DataFrame()
dfX['Col1']=[['a','b'],['c','d']]
dfX['Col2']=['a','d']
dfX

    Col1   Col2
0   [a,b]   a
1   [c,d]   d

Me gustaría obtener el valor en Col2 en la línea que contiene la lista ['a', 'b'] en la columna Col1. Intenté especialmente lo siguiente pero no funcionó:

dfX[dfX['Col1'] == ['a','b']]['Col2']

Como lo puedo hacer ?

Gracias

2
Ewdlam 29 oct. 2019 a las 18:02

1 respuesta

La mejor respuesta

Por lo que entiendo, quieres que 'Col1' sea exactamente ['a', 'b'].

Esto es lo que haría:

import pandas as pd
dfX = pd.DataFrame()
dfX['Col1']=[['a','b'],['c','d']]
dfX['Col2']=['a','d']

#find every row where 'Col1' is equal to ['a','b']
mask = dfX.apply(lambda x: ['a','b'] == x.Col1,axis=1)

#apply it to your dataframe
print(dfX[mask]['Col2'])

Salida:

0    a
Name: Col2, dtype: object
0
mgruber 29 oct. 2019 a las 15:12