У меня есть таблица, которая выглядит примерно так:
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
...
, и я хотел бы выбрать все строки, принадлежащие группе идентификаторов. Я знаю, что могу сделать что-то вроде
table[table.IDs == 124]
, чтобы выбрать всю строку одного идентификатора, и я могу сделать
table[(table.IDs == 124) | (table.IDs == 309)]
, чтобы получить две строки идентификатора. Но представьте, что у меня есть ~ 100 000 строк с более чем 1000 уникальными идентификаторами (которые отличаются от индексов строк), и я хочу выбрать все строки, соответствующие набору из 10 идентификаторов. Интуитивно я хотел бы сделать следующее:
# id_list: a list of 10 IDs
table[ table.IDs in id_list ]
но Python отвергает этот синтаксис. Единственный способ, который я могу придумать, - это сделать следующее:
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]) ]
, что мне кажется очень неэлегантным - слишком много кода и отсутствие гибкости для списков разной длины. Есть ли способ обойти мою проблему, например, использовать списки или функцию .any ()? Любая помощь приветствуется.