python - 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
我尝试了什么:
我试图做最好的模型数据框的支点,然后映射结果,但这对我不起作用,有人能建议我更好的编码方法吗?
解决方案
让我们尝试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
推荐阅读
- scala - 使用 Squeryl 版本 0.9.14 和 Scala 版本 2.13.1 时出现错误“未找到参数 fieldMapper:FieldMapper 的隐含”
- m3u8 - 如何将 .ass/.srt 格式的字幕添加到 m3u8 文件?
- javascript - 没有类的 Typescript 中的 Getter / Setter
- java - 文件未在 Java 中读取
- c# - 有没有办法在 Unity 中与 C# 发生冲突后临时更改精灵颜色
- kotlin - Kotlin 函数参数泛型接口类型类型不匹配
- javascript - 无法填写文本字段并自动提交
- javascript - 在另一个 Promise 中嵌套一个 fetch Promise (React)?
- reactjs - 将对象添加到状态时出现 React.js 错误(使用反应挂钩)
- linux - 如何在linux中使用`mt`命令通过首先将驱动器头移动到一般位置来快速提取磁带驱动器中的文件?