假设我有一个非常大的数据帧dfBig
和列Param1, Param2, ..., ParamN, score, step
,还有一个较小的数据帧dfSmall
和列Param1, Param2, ..., ParamN
(即缺少score
和step
列)。你知道吗
我想选择dfBig
中列Param1, Param2, ..., ParamN
的值与dfSmall
中某一行的值匹配的所有行。在熊猫身上有没有干净的方法?你知道吗
编辑:要给出一个示例,请考虑以下数据帧dfBig
:
Arch | Layers | Score | Time
A | 1 | 0.3 | 10
A | 1 | 0.6 | 20
A | 1 | 0.7 | 30
A | 2 | 0.4 | 10
A | 2 | 0.5 | 20
A | 2 | 0.6 | 30
B | 1 | 0.1 | 10
B | 1 | 0.2 | 20
B | 1 | 0.7 | 30
B | 2 | 0.7 | 10
B | 2 | 0.8 | 20
B | 2 | 0.8 | 30
假设一个模型是由一对(Arch, Layers)
指定的。我想查询dfBig
并获得一段时间内具有Arch A和Arch B的最佳性能模型的得分时间序列
按照EdChum下面的回答,我认为最好的解决办法是按程序做这样的事情:
modelColumns = [col for col in dfBigCol if col not in ["Time", "Score"]]
groupedBest = dfBig.groupby("Arch").Score.max()
dfSmall = pd.DataFrame(groupedBest).reset_index()[modelColumns]
dfBest = pd.merge(dfSmall, dfBig)
由此产生:
Arch | Layers | Score | Time
A | 1 | 0.3 | 10
A | 1 | 0.6 | 20
A | 1 | 0.7 | 30
B | 2 | 0.7 | 10
B | 2 | 0.8 | 20
B | 2 | 0.8 | 30
如果有更好的办法,我很高兴听到。你知道吗
如果我正确理解您的问题,您应该能够调用
merge
ondfBig
并传递dfSmall
,它将在对齐的列中查找匹配项,并且只返回那些行。你知道吗示例:
相关问题 更多 >
编程相关推荐