tengo una tabla que es algo como esto:mesa Numpy - Criterios de selección múltiple avanzada
IDs Timestamp Values
124 300.6 1.23
124 350.1 -2.4
309 300.6 10.3
12 123.4 9.00
18 350.1 2.11
309 350.1 8.3
...
y me gustaría para seleccionar todas las filas que pertenecen a un grupo de ID. Sé que puedo hacer algo como
table[table.IDs == 124]
para seleccionar todas las filas de un ID, y no pude hacer
table[(table.IDs == 124) | (table.IDs == 309)]
para obtener filas dos ID. Pero imagine que tengo ~ 100,000 filas con más de 1,000 ID únicos (que son distintos de los índices de filas), y quiero seleccionar todas las filas que coinciden con un conjunto de 10 ID. Intuitivamente me gustaría hacer esto:
# id_list: a list of 10 IDs
table[ table.IDs in id_list ]
pero Python rechaza esta sintaxis. La única manera que se me ocurre es hacer lo siguiente:
table[ (table.IDs == id_list[0]) |
(table.IDs == id_list[1]) |
(table.IDs == id_list[2]) |
(table.IDs == id_list[3]) |
(table.IDs == id_list[4]) |
(table.IDs == id_list[5]) |
(table.IDs == id_list[6]) |
(table.IDs == id_list[7]) |
(table.IDs == id_list[8]) |
(table.IDs == id_list[9]) ]
que parece muy poco elegante para mí - demasiado código y no hay flexibilidad para diferentes longitudes de las listas. ¿Hay alguna forma de solucionar mi problema, como el uso de listas de comprensión, o la función .any()? Se agradece cualquier ayuda.
'in1d' es claramente el camino a seguir. – Paul
¡Muchas gracias! Esto es exactamente lo que estaba buscando. –
@ Camarada42: ¡De nada! Siempre puede marcar la pregunta como "respondida" para mayor claridad. – joris