如何在两个工作簿中的列中搜索匹配的值,以及如何将同一匹配行中不同列的值写入其中一个工作簿?

时间:2019-02-06 23:28:46

标签: python excel pandas openpyxl

我希望能够打开两个Excel工作簿并比较每个可能具有匹配值的列。发现匹配值后,我想从工作簿1的同一行中获取另一个值,并将其写入工作簿2的同一匹配值行。

对于我的输出文件,我只是尝试添加一列数据,这些数据将与我在两个工作簿之间进行比较的其他列中的值匹配的地方匹配。

在下面的示例中,我想比较两个工作簿之间的列A。找到匹配的值后,我想将该值写入工作簿1中的C列到工作簿2中的C列的同一行。

Input workbook 1:
A      B    C
dog    1    red
cat    2    green
bird   3    blue

Input workbook 2:
A      B       C     D       E
pig    house         stuff   stuff
cat    car           stuff   stuff
horse  train         stuff   stuff

Output Workbook 2
A       B      C       D       E
pig     house          stuff  stuff
cat     car    green   stuff  stuff
horse   trian          stuff  stuff

我已经使用openpyxl和pandas尝试了许多代码迭代,但都没有成功。我觉得我最接近在熊猫中使用merge,join,concat,但是这些值从未在有意义的地方打印出来。

例如,类似的事情最终将数据从一个工作簿复制到另一个工作簿,但是在预期的任何地方都没有匹配。

df2 = df1.merge(df2, 'A', 'C')
df2 = pd.merge(df2,df1, on=['A'], how='left')
df2 = pd.concat([df1.set_index('A') for d in [df1, df2]], axis=1).reset_index()

如果有帮助,我的实际数据在每个工作簿中都有几百行。实际上只有两列按标题名称匹配。一个是我正在比较的列,另一个是我试图从一个工作簿写入另一个工作簿的数据。

我愿意使用任何可以轻松比较两个excel工作簿并根据指定列中的匹配值将数据彼此写入的方法。 任何帮助将不胜感激。

0 个答案:

没有答案