2017-01-26 3 views
0

Ich habe zwei .csv-Dateien, A und B. A hat 1.000.000 Zeilen und 2 Spalten; B hat 20 Zeilen und 2 Spalten. Sie sehen aus wie folgt:Python. For-Schleifen und dicts: für Zeilen in Datei A: erhalten übereinstimmende Ausgabe von Datei B

A:

Var1 S 
x  2 
y  1 
z  7 
x  2 
x  3 
z  4 

B:

Var1 Var2 
x  a 
y  b 
z  c 

A und B haben eine Spalte Var1 mit 3 Variablen (x, y, z), aber in einem sind sie nicht einzigartig, während in B sie sind. B hat eine zusätzliche Spalte Var2 mit 3 Variablen (a, b, c). Mit Python oder R, würde Ich mag eine neue Datei C erstellen, indem Sie eine neue Spalte Var2 zu A mit den Spielen von Var1 zwischen A und B angehängt wird, so kann ich so etwas wie diese:

C:

Var1 S Var 2 
x  2 a 
y  1 b 
z  7 c 
x  2 a 
x  3 a 
z  4 c 

Ich habe Wörterbücher und for-Schleifen in Python verwendet, aber ohne Erfolg. Mein Problem ist, dass wenn ich "für A:" verwende, ich nur Ausgabeinfo von A bekomme; Wenn ich "for B:" verwende, erhalte ich nur Output-Informationen von B. Ich weiß, dass es keinen logischen Sinn ergibt, aber ich würde gerne etwas tun wie: "für A, bekomme passende Output-Informationen von B".

WICHTIG: Ich habe gerade durch das Feedback der Benutzer festgestellt, dass die "merge" -Operation den Job sehr einfach erledigt, entweder mit "pandas" (python) oder R (dplyr, merge). Es war einfacher als ich dachte.

+1

Tun Sie einfach eine 'merge (A, B)' oder 'library (dplyr); left_join (A, B) 'in' R' – akrun

+1

vielen Dank @akrun, es hat perfekt funktioniert! – Lucas

+0

Ich glaube nicht, dass dies ein Duplikat ist. Pandas ist Overkill – Stats4224

Antwort

0

Verwenden folgenden Code

import pandas as pd 
# create your two dataset here and perform below operation 
pd.merge(FIRST_TABLE, SECOND_TABLE, how='left', on=['Var1']) 

hoffe, das hilft!

Verwandte Themen