python比较两个excel表并附加正确的记录

时间:2016-07-11 07:11:28

标签: python excel sorting comparison

我需要创建一个excel表,比较两个样本表,其中一个包含序列号和其他信息。第二张包含保修日期。例如, source1表包含以下数据

Model       Serial     Location
Dell        1234       A
Thoshiba    2345       B
Apple       3456       C
Cisco       4567       D
Sun         5678       E

source2包含以下数据

Serial  Warranty Status
2345    1/1/2010
4567    2/2/2012
1112    3/2/2015

,结果应为

Model        Serial     Location    Warranty Status
Dell         1234           A        Not Found
Thoshiba     2345           B        1/1/2010
Apple        3456           C        Not Found
Cisco        4567           D        2/2/2012
Sun          5678           E        Not Found
Not Found    1112          Not Found    3/2/2015

我找到了一些示例脚本,但我的方案包含:

  1. 大量数据,需要花费很多时间才能运行
  2. 序列号在source1和source2文件中的顺序不一样
  3. 在任何一个源文件
  4. 中都存在序列号的情况

    请给我一些建议和最佳算法,以便更快地完成此任务。

2 个答案:

答案 0 :(得分:1)

尝试下面的代码,我修改过:

import pandas as pd

source1_df = pd.read_excel('a.xlsx', sheetname='source1')
source2_df = pd.read_excel('a.xlsx', sheetname='source2')
joined_df = pd.merge(source1_df,source2_df,on='Serial',how='outer')
joined_df.to_excel('/home/user1/test/result.xlsx')

我不是python的专家,但是一个人工作过。

答案 1 :(得分:0)

安装pandas,然后您可以将每个工作表加载为数据框并按Serial加入:

import pandas as pd

source1_df = pd.read_excel('path/to/excel', sheetname='source1_sheet_name')
source2_df = pd.read_excel('path/to/excel', sheetname='source2_sheet_name')

joined_df = source1_df.join(source2_df, on='Serial')

joined_df.to_excel('path/to/output_excel')