ich zwei Datenrahmen anschließen möchten:replizieren IFERROR und vlookup in einem Pandas kommen
df1 = pd.DataFrame({'Banner': {0: 'banner1', 1: 'banner2', 2: 'banner3'},
'Campaign': {0: 'campaign1', 1: 'campaign2', 2: '12345'},
'Country ': {0: 'de', 1: 'it', 2: 'de'},
'Date': {0: '1/1/2016', 1: '2/1/2016', 2: '1/1/2016'},
'Value_1': {0: 10, 1: 5, 2: 20}})
df2 = pd.DataFrame({'Banner': {0: 'banner1', 1: 'banner2', 2: 'banner3', 3: 'banner4', 4: 'banner5'},
'Campaign': {0: 'campaign1',1: 'campaign2', 2: 'none',3: 'campaign4',4: 'campaign5'},
'Country ': {0: 'de', 1: 'it', 2: 'de', 3: 'en', 4: 'en'},
'Date': {0: '1/1/2016', 1: '2/1/2016', 2: '1/1/2016', 3: '3/1/2016', 4: '4/1/2016'},
'Value_2': {0: 5, 1: 10, 2: 15, 3: 20, 4: 25},
'id_campaign': {0: 'none', 1: 'none', 2: '12345', 3: 'none', 4: 'none'}})
bearbeiten: lassen Sie uns auch die Möglichkeit, sich vorstellen:
df1 = pd.DataFrame({'Banner': {0: 'banner1', 1: 'banner2', 2: 'banner3'},
'Campaign': {0: 'campaign1', 1: 'campaign2', 2: '12345'},
'Date': {0: '1/1/2016', 1: '2/1/2016', 2: '1/1/2016'},
'Value_1': {0: 10, 1: 5, 2: 20}})
Ich habe DF2 und DF1 beitreten auf den Tasten:
- Datum
- Kampagne
- Banner
Das hier Problem ist, dass, wenn das Spiel unter dem Schlüssel „Kampagne“ nicht gefunden wird, soll der Schlüssel Feld „id_campaign“ umgeschaltet wird.
Ich mag diesen Datenrahmen erhalten:
df_joined = pd.DataFrame({'Banner': {0: 'banner1', 1: 'banner2', 2: 'banner3', 3: 'banner4', 4: 'banner5'},
'Campaign': {0: 'campaign1', 1: 'campaign2', 2: 'none', 3: 'campaign4', 4: 'campaign5'},
'Country ': {0: 'de', 1: 'it', 2: 'de', 3: 'en', 4: 'en'},
'Date': {0: '1/1/2016', 1: '2/1/2016', 2: '1/1/2016', 3: '3/1/2016', 4: '4/1/2016'},
'Value_1': {0: 10, 1: 5, 2: 20, 3: 0, 4: 0},
'Value_2': {0: 5, 1: 10, 2: 15, 3: 20, 4: 25},
'id_campaign': {0: 'none', 1: 'none', 2: '12345', 3: 'none', 4: 'none'}})
jede Hilfe ist wirklich zu schätzen.
Es funktioniert einwandfrei: Ich brauche nur eine zusätzliche Klärung besser die Verbindung zu verstehen. Wenn der df1 nicht die Spalte "Land" enthält, würde ich würde ich das gleiche df3 bekommen? Ich werde meine Frage bearbeiten. – xxxvinxxx
Ich denke, beide "df1" sind gleich. Vielleicht eine falsche Kopie. – jezrael
Ok, versuche ich besser meine Lösung zu erklären: Also Idee ist sehr einfach - wenn Innenverbindung verwenden, müssen alle Schlüssel übereinstimmen. Also wenn 3 Schlüssel 'on = ['Datum', 'Kampagne', 'Banner']' und einige nicht übereinstimmen, wird weggelassen. und problematischer Schlüssel ist in der Spalte 'Kampagne'. also erstelle ich eine weitere 'merge', bei der dieser problematische Schlüssel weggelassen wird und du eine weitere Ausgabe' df4' bekommst. Aber Sie brauchen nur die Spalte 'Value_1' und müssen alle Werte von' df3 ['Value_1'] 'wo' NaN' (nicht übereinstimmen) ersetzen. Also addieren Sie den Wert "20" und die Werte in der ersten und zweiten Zeile werden nicht ersetzt. Wenn meine Erklärung nicht klar ist (kann ich oft nicht gut erklären), gib mir eine Frage. Danke – jezrael