Dataframe: применение динамических методов и консолидация результатов (циклы, разворот, проблемы слияния) - PullRequest
0 голосов
/ 21 октября 2019

Из исходного кадра данных, в зависимости от комбинаций, наблюдаемых в 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

Я уже пробовал кое-что, но не уверен, что использую «лучший / оптимизированный подход», и у меня также есть проблема, касающаяся временных опорных точек и окончательной консолидациирезультаты (объединить с помощью цикла).

Не могли бы вы помочь мне обеспечить разработку с "наилучшим подходом"?

Большое спасибо за вашу помощь! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...