2016-07-11 86 views
0

我需要創建一個excel表,比較兩個樣本表,其中一個包含序列號和其他信息。第二張表包含保修日期。例如, 來源1頁包含的數據如下python比較兩個excel表並追加正確的記錄

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

源2包含數據如下

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. 有一些情況存在序列號存在於源文件

請給我一些建議和最佳算法來做到這一點更快。

回答

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專家,但超過一個工作。

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') 
+0

爲此得到一些錯誤。 http://stackoverflow.com/questions/38347985/python-pandas-merging-excel-sheets-not-working – theG