Aparte de lo que te está contestando Darío (error en la entrada: 627.12 en lugar de 617.12), a tu otra pregunta...
- Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra valores > booleanos, en realidad no se que estaría chequeando isin te devuelve *siempre* un DataFrame de booleanos, siendo True las celdas donde hay coincidencia con alguno de los valores que pasaste a isin. Así pues, ninguna sorpresa. Ese dataframe de booleanos lo puedes utilizar como una *máscara* para filtrar los valores de otro DataFrame. Eso es lo que haces en tu ejemplo anterior: *print(df2[df2['pami'].isin(['382.24', '627.12'])])* Observa que estás usando df2['pami'].isin(['382.24', '627.12']) como índice del propio df2. En este caso, tu máscara está discriminando algunas filas: el resultado de df2[mascara] será un nuevo DataFrame que mostrará (normalmente esto se hace con una clase proxy que actúa como "vista") sólo esas filas. En tu segundo ejemplo no estás aplicando la máscara: la estás imprimiendo directamente y por tanto sólo ves los booleanos. Curiosidad: las máscaras se pueden combinar usando operaciones booleanas normales. Por ejemplo, combinando criterios sobre diferentes columnas: >>> l = df2['lab'].isin(['Alcon']) >>> p = df2['pami'].isin(['382.24', '617.12']) >>> l 19 False 629 False 23549 True 30087 False Name: lab, dtype: bool >>> p 19 False 629 True 23549 False 30087 True Name: pami, dtype: bool >>> l & p # AND lógico -> todas False porque no coincide nada 19 False 629 False 23549 False 30087 False dtype: bool >>> l | p # OR lógico -> combina las filas True de ambas 19 False 629 True 23549 True 30087 True dtype: bool >>> df2[l | p] # DataFrame con las filas que cumplen AL MENOS uno de los dos criterios lab pami 629 Alcon 382.24 23549 Duncan 245.44 30087 Fabra 617.12 >>> df2[l & p] # DataFrame con las filas que cumplen AMBOS criterios (está vacío, claro) Empty DataFrame Columns: [lab, pami] Index: [] Saludos, Ricardo On Wed, Aug 5, 2020 at 9:06 AM Lemarchand Barker <lemarchand8...@gmail.com> wrote: > Hola siguiendo con la lectura de pandas, estoy probando isin() y no me > queda muy en claro bien que función cumple y qué tipo de uso le podría dar. > Mi ejemplo es el siguiente: > > leer = pd.read_csv('democsv.csv') > df = pd.DataFrame({ > 'lab': ['Abbott Diabetes', 'Alcon', 'Duncan', 'Fabra'], > 'pami': ['490.13', '382.24', '245.44', '617.12'],}, > index=['19', '629', '23549', '30087']) > df2 = df.copy() > > df2['pami'] = ['490.13', '382.24', '245.44', '617.12'] > *print(df2['pami'])* > > Salida: > 19 490.13 > 629 382.24 > 23549 245.44 > 30087 617.12 > Name: pami, dtype: object > > > *print(df2[df2['pami'].isin(['382.24', '627.12'])])* > > - En esta salida tengo un inconveniente, paso 2 valores: 382.24 y 627.12 y > solo muestra 1, qué estoy haciendo mal? > > Salida: > lab pami > 629 Alcon 382.24 > > > *print(df2.isin({'pami': [1, 3]}))* > > - Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra valores > booleanos, en realidad no se que estaría chequeando > > Salida: > lab pami > 19 False False > 629 False False > 23549 False False > 30087 False False > > Muchas gracias, saludos > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es