Предположим, мы имеем следующие DataFrameВыберите подмножество панды DataFrame на основе списка критериев, построенного из другого DataFrame
>>> import pandas as pd
>>> df_org = pd.DataFrame({'A' : [1,2,3,4,5,6],
'B' : [1,1,1,1,2,2],
'C' : [1,2,3,4,1,2]})
A B C
0 1 1 1
1 2 1 2
2 3 1 3
3 4 1 4
4 5 2 1
5 6 2 2
И это еще один, df_criteria
, что есть некоторые из столбцов df_org
и от которые мы будем строить нашими критериями. Например:
>>> df_criteria = pd.DataFrame({'B' : [1,2],
'C' : [1,1]})
B C
0 1 1
1 2 1
Я хотел бы, чтобы иметь возможность получить значение A
в df_org
DataFrame, для которых соответствующие значения B
и C
совпадают с теми, перечисленных в df_criteria
DataFrame. В этом примере, я хотел бы иметь подмножество df_org
, содержащую ее строки «0» и «4», как так:
A B C
0 1 1 1
4 5 2 1
Будучи новичком в панде, так, как я реализовал это с помощью for
-loop mindset: путем итерации по строкам df_criteria
и запроса df_org
для каждой строки. Тем не менее, это очень медленно, и у меня создается впечатление, что должен быть более пифонический (и более быстрый) способ, который не использует for
-loops. Я также изучил использование DataFrame.lookup
, однако это не полезно в моем случае, потому что индексы в df_criteria
и df_org
не обязательно совпадают.
Любое предложение было бы очень оценено. Большое спасибо!