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

标签 python excel indexing pandas match

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

我想做的是比较两者,并从与 a2.xlsx 的列名称匹配的 a1.xlsx 中提取 A 和 B 的值,然后复制a2.xlsx 中 C 列和 D 列的值。我知道如何在 Excel 中使用 Index-Match 执行此操作,但不使用 Python 的 Pandas。

电子表格 1 (a1.xlsx)

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)

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

最佳答案

假设电子表格 1 已加载到 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]:
             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

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

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 的顶部。

关于python - 比较两个电子表格并提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29550409/

相关文章:

java - 使用 JAVA 在 CSV 文件中创建列

gwt - 索引重定向 onload 的 HTML 页面

python - 当使用 .clamp 而不是 torch.relu 时,Pytorch Autograd 会给出不同的渐变

python - 如何在 Django 应用程序中转换时区

excel - 从单元格区域中删除尾随 "US"和 "CAN"字符串

jquery获取最后一个输入字段索引

MongoDB 标签键索引

python :为什么 setter和getter ?如何快速设置属性?

python - 具有前同级的多个值

readxl::read_xls 返回 "libxls error: Unable to open file"