首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个电子表格并提取值

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

Stack Overflow用户
提问于 2015-04-10 06:50:04
回答 1查看 2.5K关注 0票数 1

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

我想做的是将两者进行比较,并从a1.xlsx中提取与a2.xlsx的列名匹配的A和B的值,然后将这些值复制到a2.xlsx中的C和D列。我知道如何在excel中使用Index-Match来做到这一点,但不是使用Python的Pandas。

电子表格1 (a1.xlsx)

代码语言:javascript
复制
Index   A   B   C
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)

代码语言:javascript
复制
Index   A   B   C   D
0   dublin  34  x   x
1   seoul   36  x   x
2   london  12  x   x
3   berlin  4   x   x
4   tokyo   6   x   x
5   seatte  22  x   x
EN

回答 1

Stack Overflow用户

发布于 2015-04-10 14:01:31

假设将spreadsheet1加载到pandas df,并将电子表格2加载到df1,那么您可以从merge的结果中赋值

代码语言:javascript
复制
In [20]:

df1[['C','D']] = df1.merge(df, left_on='A', right_on='C',how='left')[['A_y','B_y']]
df1
Out[20]:
             A   B    C   D
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

只是为了解释一下当我们合并时,我们执行左合并,这将产生列的冲突,因为我们有冲突的列名:

代码语言:javascript
复制
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   x  x  NaN  NaN      NaN
1    seoul   36   x  x  NaN  NaN      NaN
2   london   12   x  x    g    2   london
3   berlin    4   x  x    d    1   berlin
4    tokyo    6   x  x    c    3    tokyo
5  seattle   22   x  x    f   10  seattle

我们只对列A_yB_y感兴趣,我们执行左合并,因为如果我们做的默认合并类型是“内部”,那么这将不会与原始df对齐,也就是说,值将被移到df的顶部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29550409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档