基本上我有两个DataFrame并希望通过匹配第二个第三个元素和第一个元素来重新填充第二个列。举个例子,我在两个DataFrame中都有列“Period”和“Hub”。对于第二个DataFrame中的每一行,我想获取Index(它是一个日期)和“Product”/“Hub”(它们是字符串)的值,并找到第一个DataFrame中具有相同值的行相应的列)并从该行返回“期间”的值。然后,我可以使用此值在第二个DataFrame中填充我的行。通过匹配另一个DataFrame中的值来优化pandas DataFrame列的填充
我有一个工作解决方案,但它真的很慢。也许这只是由于DataFrames的大小(大约100k行),但它需要花费一个多小时才能完成!
无论如何,这是我的工作解决方案 - 任何提示如何加快它将非常感激!
def selectData(hub, product):
qry = "Hub=='"+hub+"' and Product=='"+product+"'"
return data_1.query(qry)
data_2["Period"] = data_2.apply(lambda row: selectData(row["Hub"], row["Product"]).ix[row.index, "Period"], axis=1)
编辑:我要指出的是,第一个数据帧是保证有一个唯一的结果我的查询,但包含更大的一组来填充data_2
EDIT2要求比数据的:我只是意识到这是事实上不是工作的解决方案...
PLS显示输入数据和你所期望的输出是什么。可复制的soln是最好的。 – Jeff