2017-04-03 4 views
1

Ich habe ein Problem mit einer relativ einfachen Aufgabe mit ...verschmelzenden kehrt ungeradee Länge

Ich habe zwei Datenrahmen: df_sample, die ich von csv lesen

+------+-----------+-------+-----------+ 
| key | Full Text | Date | Publisher | 
+------+-----------+-------+-----------+ 
| abcd | foofoo | date1 | a   | 
| bcde | barbar | date2 | b   | 
| cdef | foobar | date3 | c   | 
+------+-----------+-------+-----------+ 

len(df_sample) = 20000 

df_labels, die ich aus Excel lesen

Ich möchte beide Tabellen auf Schlüssel, relevant Wert für jeden Schlüssel von der ersten zuweisen Datenrahmen. Die gewünschte Ausgabe würde wie folgt sein:

+------+-----------+-------+-----------+----------+ 
| key | Full Text | Date | Publisher | relevant | 
+------+-----------+-------+-----------+----------+ 
| abcd | foofoo | date1 | a   | yes  | 
| bcde | barbar | date2 | b   | no  | 
| cdef | foobar | date3 | c   | no  | 
+------+-----------+-------+-----------+----------+ 

Ich scheine das zu erreichen, aber warum die folgenden mir 27.377 Ergebnisse anstelle von 20000 gibt (wie in Original-links-Tabelle):

df = pd.merge(left=df_sample, right=df_labels, on="key") 
+1

haben Sie überprüft, dass die Schlüsselspalte Werte in zweiten df sind, wenn sie wiederholt werden, dann erhalten Sie wiederholte Zeilen, zusätzlich haben Sie 'NaN' in beiden Schlüsselspalte? – EdChum

+0

natürlich, es gab einige Duplikate in der zweiten df ... Vielen Dank für die Ausrichtung in die richtige Richtung! – pawelty

Antwort

2

Du siehst zusätzliche Zeilen, weil die Schlüssel nicht über beide dfs eindeutig sind, in Ihrem Fall der zweite df. Sie müssen entscheiden, ob Sie wiederholt Zeilen möchten, welche das aktuelle Verhalten ist oder möchten Sie die Duplikate in der zweiten df fallen:

df_labels = df_labels.drop_duplicates(subset='key') 

dies wird standardmäßig nur die erste doppelte halten, wenn Sie alternative Verhalten wollen Wie zuletzt, dann können Sie: keep='last'

+0

vielen Dank nochmal! – pawelty

Verwandte Themen