Предположим, у меня есть простой фрейм данных pandas df
:
| name | car |
|----|-----------|-------|
| 0 | 'bob' | 'b' |
| 1 | 'bob' | 'c' |
| 2 | 'fox' | 'b' |
| 3 | 'fox' | 'c' |
| 4 | 'cox' | 'b' |
| 5 | 'cox' | 'c' |
| 6 | 'jo' | 'b' |
| 7 | 'jo' | 'c' |
| 8 | 'bob' | 'b' |
| 9 | 'bob' | 'c' |
| 10 | 'bob' | 'b' |
| 11 | 'bob' | 'c' |
| 12 | 'rob' | 'b' |
| 13 | 'rob' | 'c' |
Я хотел бы найти индексы строк определенного шаблона, охватывающего оба столбца. В моем реальном приложении вышеупомянутый фрейм данных имеет несколько тысяч строк, а у меня есть несколько тысяч фреймов данных, поэтому производительность не важна. Скажем, интересующий меня паттерн:
| 'bob' | 'b' |
| 'bob' | 'c' |
Следовательно, используя приведенный выше пример, мой желаемый результат будет:
out_idx = [0,1,8,9,10,11]
Обычно, конечно, для одного паттернаможно было бы сделать что-то вроде df.loc[(df.name == 'bob') & (df.car == 'b')]
, но я не уверен, как это сделать, когда я ищу конкретный и многомерный шаблон по нескольким столбцам. Т.е. я ищу (и мне довольно следующее не правильно): df.loc[(df.name == 'bob') & (df.car == 'b') & (df.car == 'c')]
.
Помощь высоко ценится. Thx!