2016-08-09 17 views
-2

Ich habe ein paar Excel-Dateien. Beide Dateien haben zwei gemeinsame Spalten: Customer_Name und Customer_No. Die erste Excel-Datei hat ungefähr 800k Zeilen, während die zweite nur 460 hat. Ich möchte einen Datenrahmen bekommen, der die gemeinsamen Daten in beiden Dateien enthält, dh die Zeilen aus der ersten Datei erhält, die sowohl Customer_Name als auch Customer_No hat. in der 2. Datei gefunden. Ich habe versucht, .isin zu verwenden, aber bis jetzt fand ich Beispiele, die nur eine einzelne Variable (Spalte) verwenden. Danke im Voraus!Vergleichen Sie zwei Excel-Dateien in Pandas und geben Sie die Zeilen mit den gleichen Werten in zwei Spalten zurück

Antwort

2

Verwendung merge:

df = pd.merge(df1, df2, on=['Customer_Name','Customer_No']) 

Wenn Sie verschiedene Spaltennamen verwenden left_on und right_on:

df = pd.merge(df1, 
       df2, 
       left_on=['Customer_Name','Customer_No'], 
       right_on=['Customer_head','Customer_Id']) 
+0

Ich bearbeite Antwort, bitte überprüfen Sie es. – jezrael

+0

Wenn meine Antwort hilfreich war, nicht vergessen [akzeptieren] (http://meta.stackexchange.com/a/5235/295067) es. Vielen Dank. – jezrael

+0

Aber ich bekomme stattdessen einen KeyError. Ich habe die Datentypen der Spalten überprüft und sichergestellt, dass sie auch gleich sind. :( – Ruffy26

0

IIUC und Sie brauchen keine zusätzliche Spalten aus der zweiten Datei - es verwendet wird nur für den Beitritt, können Sie es so machen:

common_cols = ['Customer_Name','Customer_No'] 

df = (pd.read_excel(filename1) 
     .join(pd.read_excel(filename2, usecols=common_cols), 
          on=common_cols)) 
0

Ich denke, der direkte Weg wird so sein:

df_file1 = pd.read_csv(file1, index_col) # set Customer_No 
df_file2 = pd.read_csv(file2, index_col) # set Customer_No 
for index, row in df_file1.iterrows(): 
    if row.get_value('Customer_name) in df_file2['Customer_name'].values: 

hier können Sie sich verlassen, einfach durch ganze Zahl oder eine komplizierte Aufgabe produzieren wie hinzufügen [index, Zeile] df zu führen, wenn nötig.

Verwandte Themen