Tengo 2 listas. 1 contiene mis predicciones, el otro los resultados reales. Quiero reemplazar los valores en 'mypicks' a 1 si está en la lista 'ganadores; y 0 si el valor no está en la lista 'ganadores'.

Usando las 2 listas a continuación. 'mypicks' cambiaría a [0,0,1,1,0,0,1,0,0,0] 0 representa el valor NO en la lista 'ganadores' y 1 representa los valores que ESTÁN en la lista 'ganadores'.

winners: ['GB', 'Ten', 'SF', 'Ari', 'Dal', 'Bal', 'Was', 'KC', 'Buf', 'LA', 'NE', 'Cin', 'Min', 'Oak', 'Hou']
mypicks: ['Atl', 'Mia', 'Ten', 'KC', 'Phi', 'Det', 'Dal', 'TB', 'Pit', 'Den']
-1
user3159004 11 oct. 2019 a las 21:41

3 respuestas

La mejor respuesta
mypicks_binary = [1 if item in winners else 0 for item in mypicks]
1
Mr_U4913 11 oct. 2019 a las 18:47
[int(item in winners) for item in mypicks]

Si está tratando de usar esto para fines de verificación, elimine int para tener Booleanos convenientes. De cualquier manera, si solo necesita contar la cantidad de selecciones correctas, simplemente sum en esa lista obtendrá el total deseado.

0
Prune 11 oct. 2019 a las 18:48

Asumiendo que la etiqueta pandas es correcta en esta pregunta:

correct_picks = list(df['mypicks'].isin(df['winners']).astype(int))

Devolverá una lista de [0,1] como la que está buscando, en columnas pandas en lugar de listas.

0
economy 11 oct. 2019 a las 18:50
58346847