ソースデータフレームから、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
私はすでにいくつかのことを試しましたが、「最良/最適化されたアプローチ」を使用するかどうかはわかりません。また、一時的なピボットと結果の最終的な統合 (ループを使用したマージ) に関する問題もあります。
「最善のアプローチ」で確実に開発できるように手伝ってもらえますか?
ご協力ありがとうございました!:)