Python 如果第三个单元格匹配,将值从数据帧的一个单元格复制到另一个数据帧的最快方法

Python 如果第三个单元格匹配,将值从数据帧的一个单元格复制到另一个数据帧的最快方法,python,pandas,Python,Pandas,我有一个主数据帧,包含750到3000行数据 我有一个每日订单数据框,包含3000到5000行数据 如果在主数据框中找到了daily order数据框的产品代码,我就得到了项目成本。否则,它将被标记为无效并被删除 我目前通过2个for循环来实现这一点。但我必须做更多这样的比较和数据更新(要比较的其他字段,要复制的其他值) 最有效的方法是什么 我无法将我正在比较的列与主数据帧的索引列进行比较。 在这种情况下,产品代码在主代码中可能是唯一的,我可以进行合并,但在其他情况下,我可能需要比较其他值,如供

我有一个主数据帧,包含750到3000行数据

我有一个每日订单数据框,包含3000到5000行数据

如果在主数据框中找到了daily order数据框的产品代码,我就得到了项目成本。否则,它将被标记为无效并被删除

我目前通过2个for循环来实现这一点。但我必须做更多这样的比较和数据更新(要比较的其他字段,要复制的其他值) 最有效的方法是什么

我无法将我正在比较的列与主数据帧的索引列进行比较。 在这种情况下,产品代码在主代码中可能是唯一的,我可以进行合并,但在其他情况下,我可能需要比较其他值,如供应商城市,这些值可能不是唯一的

在我所有的Python代码中,我似乎都在重复这样做,我想学习最有效的方法

Order DF:
[![Order csv from which the Order DF is created][1]][1]
我将传递我正在比较的列名和我正在用数据填充的列名,因为csv的命名有微小的变化。在我分享的数据中,材料体积为CBF,在某些情况下为CBM

数据列不能被索引,因为任何列中都没有唯一的数据,使它们唯一的总是值的组合


在本例中,数据是一个浮点数,可以使用numpy,但在其他情况下,如从主控形状复制城市名称,数据是一个字符串。numpy是向其他有类似问题的人提出的建议

我不知道这是否是最有效的方法-作为一个开始使用Fortran和C编程的人,我总是支持基本数据类型,而这个解决方案没有使用基本数据类型。这绝对是一个高度Pythonic的解决方案

orderDF=orderDF[orderDF[ParamF].isin(mstrDF[ParamF])]
orderDF=orderDF.reset_index(drop=True)
我在orderDF和msterDF数据帧上使用左合并来复制所有相关值

orderDF=orderDF.merge(mstrDF.drop_duplicates(paramC,keep='last')[[paramF[0]]]', how='left',validate = 'm:1')

我不知道这是否是最有效的方法——作为一个开始使用Fortran和C语言编程的人,我总是支持基本数据类型,而这个解决方案没有使用基本数据类型。这绝对是一个高度Pythonic的解决方案

orderDF=orderDF[orderDF[ParamF].isin(mstrDF[ParamF])]
orderDF=orderDF.reset_index(drop=True)
我在orderDF和msterDF数据帧上使用左合并来复制所有相关值

orderDF=orderDF.merge(mstrDF.drop_duplicates(paramC,keep='last')[[paramF[0]]]', how='left',validate = 'm:1')