У меня большой список, который содержит повторяющиеся значения, и я хочу установить подкадр данных, используя значения списка.Обычно я бы использовал метод .isin
, но я хочу сохранить повторяющиеся строки.Вот пример кода:
df = pd.DataFrame(np.array([[1, 2, 'car'], [4, 5, 'bike'], [1, 2, 'train'], [1, 2, 'car'], [1, 2, 'train']]),columns=['a', 'b', 'c'])
lst = ['car', 'bike', 'car', 'car']
Поэтому я хочу возвращать фрейм данных, который включает все строки каждый раз, когда они происходят.Каждый раз, когда элемент появляется в списке, я хочу вернуть соответствующие строки.
В простом наборе данных, таком как приведенный выше, я могу циклически проходить по списку и добавлять к новому фрейму данных возвращаемые значения, но побольшой набор данных, кажется, занимает очень много времени.Любые предложения?
РЕДАКТИРОВАТЬ: Таким образом, предложение Криса работает, и обеспечивает ожидаемый результат, используя:
pd.concat([df[df['c'].eq(x)] for x in lst])
Однако, как и при использовании цикла это очень медленно по сравнению с чем-то вроде.isin
метод при работе с гораздо большими данными.Добавлена эта правка, чтобы можно было создать ожидаемый вывод.