Из исходного кадра данных, в зависимости от комбинаций, наблюдаемых в m столбцах (m1, m2, m3 ...) и в соответствии с «справочной таблицей», моя цель состоит в том, чтобы идентифицировать соответствующий «случай» (управляющий приоритет)в каждой строке и хранить эту информацию.
import pandas as pd
# Source Dataframe
src_df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9], 'm1':["true","false","false"], 'm2':["true","false","true"], 'm3':["true","true","true"]})
print(src_df)
A B C m1 m2 m3
0 1 4 7 true true true
1 2 5 8 false false true
2 3 6 9 false true true
# Reference table
ref_df = ref_df = pd.DataFrame({'case':[1,1,2,2,2,3], 'priority':[1,1,2,2,2,3], 'method_name':["m1", "m2", "m1", "m2", "m3", "m1"], 'expected_result':["true", "true", "false", "false", "true", "false"]})
print(ref_df)
case priority method_name expected_result
0 1 1 m1 true
1 1 1 m2 true
2 2 2 m1 false
3 2 2 m2 false
4 2 2 m3 true
5 3 3 m1 false
# Identification of applicable case depending on real results (vs expected results from ref table)
# HELP => what is the "best way" to perform that ?
# => my idea: looping merge() method on source dataset for each case from ref table
# Sample output of expected consolidation/identification of applicable case:
A B C m1 m2 m3 case
0 1 4 7 true true true 1
1 2 5 8 false false true 2
2 3 6 9 false true true 3
# NB : careful that case 3 must not supersede case 2 because case 3 is also verified, but after case 2 has already been verified due to priority
Я уже пробовал кое-что, но не уверен, что использую «лучший / оптимизированный подход», и у меня также есть проблема, касающаяся временных опорных точек и окончательной консолидациирезультаты (объединить с помощью цикла).
Не могли бы вы помочь мне обеспечить разработку с "наилучшим подходом"?
Большое спасибо за вашу помощь! :)