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.
Dies wirft jedoch einen Fehler auf:
%Vor%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:
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: