比较两个电子表格并提取值

我有两个不同数量的行和列的电子表格。

我想要做的是将两者进行比较,并从a1.xlsx中提取与a1.xlsx的列名相匹配的A和B的值,并将这些值复制到a2.xlsx中的列C和D. 我知道如何在Excel中使用索引匹配,但不使用Python的pandas。

电子表格1( a1.xlsx

 Index ABC 0 s 0.2 new york 1 d 1 vienna 2 g 2 london 3 c 3 tokyo 4 r 2 paris 5 d 1 berlin 6 a 8 madrid 7 f 10 seattle 

电子表格2( a2.xlsx

 Index ABCD 0 dublin 34 xx 1 seoul 36 xx 2 london 12 xx 3 berlin 4 xx 4 tokyo 6 xx 5 seatte 22 xx 

假设spreadsheet1被加载到pandas df,并且电子表格2被加载到df1,那么你可以从merge结果中分配值:

 In [20]: df1[['C','D']] = df1.merge(df, left_on='A', right_on='C',how='left')[['A_y','B_y']] df1 Out[20]: ABCD Index 0 dublin 34 NaN NaN 1 seoul 36 NaN NaN 2 london 12 g 2 3 berlin 4 d 1 4 tokyo 6 c 3 5 seattle 22 f 10 

只是在我们合并的时候稍微解释一下,我们执行一个左边的合并,这将产生一个列冲突,因为我们有列名冲突:

 In [24]: df1.merge(df, left_on='A', right_on='C',how='left') Out[24]: A_x B_x C_x D A_y B_y C_y 0 dublin 34 xx NaN NaN NaN 1 seoul 36 xx NaN NaN NaN 2 london 12 xxg 2 london 3 berlin 4 xxd 1 berlin 4 tokyo 6 xxc 3 tokyo 5 seattle 22 xxf 10 seattle 

我们只关心列A_yB_y ,我们执行一个左合并,因为如果我们做了默认的合并types,它是“内部的”,那么这将不会与原始的dfalignment,即值将被移到df的顶部。