Pandas füllen eine neue Datenspaltenspalte basierend auf übereinstimmenden Spalten in einem anderen Datenrahmen

10

Ich habe ein df , das meine Hauptdaten enthält, die eine Million rows haben. Meine Hauptdaten haben auch 30 columns . Jetzt möchte ich eine weitere Spalte zu meinem df namens category hinzufügen. Der category ist ein column in df2 , der etwa 700 rows und zwei weitere columns enthält, die mit zwei columns in df übereinstimmen.

Ich beginne damit, ein index in df2 und df zu setzen, das zwischen den Frames passt, aber ein Teil von index in df2 existiert nicht in df .

Die restlichen Spalten in df2 heißen AUTHOR_NAME und CATEGORY .

Die relevante Spalte in df heißt AUTHOR_NAME .

Ein Teil von AUTHOR_NAME in df existiert nicht in df2 und umgekehrt.

Die Anweisung, die ich möchte, ist: wenn index in df mit index in df2 übereinstimmt und title in df mit title in df2 übereinstimmt, addiere category zu df , sonst addiere NaN in category .

Beispieldaten:

%Vor%

Wenn ich df2.merge(df,left_index=True,right_index=True,how='left', on=['AUTHOR_NAME']) verwende, wird mein df dreimal größer als es sein soll.

Ich dachte also, dass das Verschmelzen der falsche Weg war. Was ich wirklich versuche, ist df2 als Nachschlagetabelle zu verwenden und dann type -Werte auf df zurückzusetzen, abhängig davon, ob bestimmte Bedingungen erfüllt sind.

%Vor%

Dies wirft jedoch einen Fehler auf:

%Vor%     
user3471881 02.10.2016, 11:47
quelle

2 Antworten

7

Betrachten Sie die folgenden Datenrahmen df und df2

%Vor%

Option 1
merge

%Vor%

Option 2
join

%Vor%

Beide Optionen ergeben

    
piRSquared 02.10.2016, 14:50
quelle
1

ANSATZ 1:

Sie können stattdessen concat verwenden und die vorhandenen doppelten Werte löschen in den Spalten Index und AUTHOR_NAME zusammen. Verwenden Sie danach isin zum Überprüfen der Mitgliedschaft:

%Vor%

Hinweis: Die Spalte Index wird als Indexspalte für DF's festgelegt.

ANSATZ 2:

Verwenden Sie join , nachdem Sie die Indexspalte richtig eingestellt haben gezeigt:

%Vor%

    
Nickil Maveli 02.10.2016 12:27
quelle

Tags und Links