2017-01-24 4 views
-1

Ich versuche gerade ein Skript zu schreiben, um den Inhalt von zwei Excel-Dateien zu vergleichen.Python Excel Spread Sheet Vergleich

Liste 1 wird das folgende Format haben;

Broadcom Drivers and Management Applications [version 17.0.8.2] 
QLogic Drivers and Management Applications [version 18.00.8.3] 
NVIDIA 3D Vision Driver 306.97 [version 306.97] 
Citrix online plug-in (Web) [version 12.1.0.30] 
Citrix online plug-in (HDX) [version 12.1.0.30] 
Google Update Helper [version 1.3.32.7] 
QfinitiPatches_20131211_Win7 [version 1.0.0.0] 
Citrix online plug-in (Web) [version 12.1.0.30] 
Citrix online plug-in (HDX) [version 12.1.0.30] 
Citrix Receiver (HDX Flash Redirection) [version 14.3.1.1] 
Citrix Authentication Manager [version 7.0.0.8243] 
Microsoft Office Access MUI (English) 2010 [version 14.0.6029.1000] 
Microsoft Office Excel MUI (English) 2010 [version 14.0.6029.1000] 
Microsoft Office PowerPoint MUI (English) 2010 [version 14.0.6029.1000] 
Microsoft Office Publisher MUI (English) 2010 [version 14.0.6029.1000] 

Liste 2 wird das folgende Format haben;

Mcrosoft Word (All versions) 
Microsoft Excel (All versions) 
Microsoft Access (All versions) 
Microsoft Project (All versions) 
Microsoft PowerPoint (All versions) 
Microsoft Infopath (All versions) 
Microsoft Visio (All versions) 
Microsoft SQL Server (All versions) 
Microsoft SQL Client (All versions) 
Microsoft explorer (version 6+) 
Firefox (version 2+) 
Oracle Database (All versions) 

Was ich das Skript benötigen, zu tun ist, Liste 2 als Referenz zu verwenden, und suchen Sie nach passenden Inhalten in der Liste 1. Da die beiden Listen i sicherstellen müssen, nicht genau übereinstimmen, dass es abholt up teilweise Übereinstimmungen.

Zum Beispiel in der Liste 1 ist Microsoft Office Access MUI (English) 2010 [Version 14.0.6029.1000], während die Liste zwei hat Microsoft Access (alle Versionen) und ich das Drehbuch benötigen würde dies holen als eine Übereinstimmung und weglassen dies aus der Ausgabedatei.

Bisher habe ich folgend

import pandas as pd 
import numpy as np 
df1 = pd.read_excel('/xls comparison project/xl files/Approved Software list.xls', 'Approved Software', parse_cols = 'd', index=False) 
df2 = pd.read_excel('/xls comparison project/xl files/Software list.xlsx', 'Sheet1', parse_cols = 'a') 
import csv 
AS = df1["Software Title"].tolist() 
S = df2["Software"].tolist() 

ich die unten versucht, aber diese sah genau für Spiele

result = [ x for x in AS if x in S] 

Ich habe den Inhalt der beiden Tabellen in Variablen geladen genannt AS und S in einem Listenformat. dann;

results = result 
resultfile = open("output1.xls",'wb') 
wr = csv.writer(resultfile, delimiter=',') 
for val in result: 
    wr.writerow([val]) 
resultfile.close() 

Das mir die Ausgabedatei gibt ich brauche

Das einzige Problem, das ich habe ist tatsächlich die Daten zu vergleichen, ich habe die Ideen ausgehen.

Ich habe ausgiebig gegooglet und obwohl ich ähnliche Probleme finden kann, war ich nicht in der Lage, eine Lösung aus ihrem Inhalt zu erstellen. Ich bin ziemlich neu bei Python, also schätze ich jede Hilfe, die Sie mir geben können.

Vielen Dank

Lee

Antwort

0
import pandas as pd 

df = pd.DataFrame(['Broadcom Drivers and Management Applications [version 17.0.8.2]','QLogic Drivers and Management Applications [version 18.00.8.3]','NVIDIA 3D Vision Driver 306.97 [version 306.97]','Citrix online plug-in (Web) [version 12.1.0.30]','Citrix online plug-in (HDX) [version 12.1.0.30]','Google Update Helper [version 1.3.32.7]','QfinitiPatches_20131211_Win7 [version 1.0.0.0]','Citrix online plug-in (Web) [version 12.1.0.30]','Citrix online plug-in (HDX) [version 12.1.0.30]','Citrix Receiver (HDX Flash Redirection) [version 14.3.1.1]','Citrix Authentication Manager [version 7.0.0.8243]','Microsoft Office Access MUI (English) 2010 [version 14.0.6029.1000]','Microsoft Office Excel MUI (English) 2010 [version 14.0.6029.1000]','Microsoft Office PowerPoint MUI (English) 2010 [version 14.0.6029.1000]','Microsoft Office Publisher MUI (English) 2010 [version 14.0.6029.1000]'], columns=['Software Title']) 
df2 = pd.DataFrame(['Mcrosoft Word (All versions)','Microsoft Excel (All versions)','Microsoft Access (All versions)','Microsoft Project (All versions)','Microsoft PowerPoint (All versions)','Microsoft Infopath (All versions)','Microsoft Visio (All versions)','Microsoft SQL Server (All versions)','Microsoft SQL Client (All versions)','Microsoft explorer (version 6+)','Firefox (version 2+)','Oracle Database (All versions)'], columns=['Title']) 

df2['TitleName'] = df2['Title'].str.split('(') #to remove version info 

df2 = pd.concat([df2['Title'], df2.TitleName.apply(pd.Series)], axis=1) 
df2.columns=['Title','Software','Version'] 
df2['Software']=df2.Software.str.replace(' ','(.*)') #create search string in regex format 


searchitems= df2["Software"].tolist() 

result=[] 
for item in searchitems: 
    print "searching for : "+item 
    print df[df['Software Title'].str.contains(item)] 

Ausgang

searching for : Mcrosoft(.*)Word(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: [] 
searching for : Microsoft(.*)Excel(.*) 
             Software Title 
12 Microsoft Office Excel MUI (English) 2010 [ve... 
searching for : Microsoft(.*)Access(.*) 
             Software Title 
11 Microsoft Office Access MUI (English) 2010 [v... 
searching for : Microsoft(.*)Project(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: [] 
searching for : Microsoft(.*)PowerPoint(.*) 
             Software Title 
13 Microsoft Office PowerPoint MUI (English) 2010... 
searching for : Microsoft(.*)Infopath(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: [] 
searching for : Microsoft(.*)Visio(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: [] 
searching for : Microsoft(.*)SQL(.*)Server(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: [] 
searching for : Microsoft(.*)SQL(.*)Client(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: [] 
searching for : Microsoft(.*)explorer(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: [] 
searching for : Firefox(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: [] 
searching for : Oracle(.*)Database(.*) 
Empty DataFrame 
Columns: [Software Title] 
Index: []