首页 > 解决方案 > Python 操作

问题描述

(M1,M2,M3)为 5 位客户提供了3 个相同的模型(x1,x2,x3,x4,x5),现在我从我的业务中了解到,他们为每个客户选择了一个模型。为客户选择的模型可以在Best_Models数据框中看到。现在我必须选择业务为每个客户选择的最佳模型的结果,可以在输出数据框中看到,我该怎么做?

import pandas as pd

data1 = {'x1': [86,23,32,13,45,12],
        'x2': [96,98,34,12,22,19], 
        'x3': [56,23,44,12,32,33],
        'x4': [96,43,84,72,42,97],
        'x5': [16,33,64,82,92,44]
       }

Model1 = pd.DataFrame(data1, 
                     columns=['x1','x2','x3','x4','x5']
                    )


data2 = {'x1': [36,23,32,13,66,12],
        'x2': [56,98,64,12,22,19], 
        'x3': [86,23,44,52,32,33],
        'x4': [96,43,74,72,42,97],
        'x5': [16,53,64,82,77,44]
       }

Model2 = pd.DataFrame(data1, 
                     columns=['x1','x2','x3','x4','x5'])


data3 = {'x1': [36,43,32,13,66,12],
        'x2': [56,48,64,12,22,19], 
        'x3': [86,23,44,54,32,33],
        'x4': [96,44,74,44,42,97],
        'x5': [16,53,64,82,44,44]
       }

Model3 = pd.DataFrame(data3, 
                     columns=['x1','x2','x3','x4','x5'])
Model3



data4 = {"Customer":["x1","x2","x3","x4","x5"],
         "Best_Model":["M2","M3","M1","M2","M3"]
       }

Best_Models = pd.DataFrame(data4, columns=['Customer', 'Best_Model'])
Best_Models

data5 = {'x1': [36,23,32,13,66,12],
        'x2': [56,48,64,12,22,19], 
        'x3': [56,23,44,12,32,33],
        'x4': [96,43,74,72,42,97],
        'x5': [16,53,64,82,44,44]
       }

Output = pd.DataFrame(data5, 
                     columns=['x1','x2','x3','x4','x5'], 
                     index=['I1', 'I2','I3','I4','I5','I6'])
Output

我尝试了什么:

我试图做最好的模型数据框的支点,然后映射结果,但这对我不起作用,有人能建议我更好的编码方法吗?

标签: pythonpython-3.xpandaslistnumpy

解决方案


让我们尝试concat使用loc

(pd.concat([Model1,Model2,Model3], keys=['M1','M2','M3'], axis=1)
   .loc[:,[(m,c) for m,c in zip(Best_Models.Best_Model, Best_Models.Customer)]]
)

输出:

   M2  M3  M1  M2  M3
   x1  x2  x3  x4  x5
0  86  56  56  96  16
1  23  48  23  43  53
2  32  64  44  84  64
3  13  12  12  72  82
4  45  22  32  42  44
5  12  19  33  97  44

推荐阅读