Heim >Backend-Entwicklung >Python-Tutorial >Wie füge ich Datenrahmen zusammen, um fehlende Werte basierend auf einer passenden Spalte anzuhängen?

Wie füge ich Datenrahmen zusammen, um fehlende Werte basierend auf einer passenden Spalte anzuhängen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 12:50:29311Durchsuche

How to merge dataframes to append missing values based on a matching column?

Datenrahmen zusammenführen, um fehlende Werte basierend auf einer übereinstimmenden Spalte anzuhängen

Im gegebenen Szenario besteht das Ziel darin, zwei Datenrahmen, df1 und, zusammenzuführen df2, basierend auf der Spalte „Name“. Die gewünschte Ausgabe besteht jedoch darin, die Informationen von df1 beizubehalten und fehlende Werte von df2 mit NaN zu füllen. Das Ergebnis sollte wie folgt aussehen:

    Name  Age  Sex
0    Tom   34    M
1   Sara   18  NaN
2    Eva   44    F
3   Jack   27    M
4  Laura   30  NaN

Methode 1: Karte nach Serie verwenden, erstellt von set_index

Dieser Ansatz beinhaltet das Erstellen einer Serie aus df2 durch Festlegen der Namensspalte als Index. Verwenden Sie dann die Methode „map()“, um die Geschlechtswerte in df1 abzugleichen und zu füllen.

<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])

print(df1)</code>

Methode 2: Alternative Lösung mit Zusammenführung mithilfe von Left Join

An Eine alternative Lösung besteht darin, df1 und df2 mithilfe des Left-Join-Ansatzes zusammenzuführen. Dadurch wird sichergestellt, dass alle Zeilen von df1 erhalten bleiben und fehlende Werte von df2 mit NaN gefüllt werden.

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')

print(df)</code>

Methode 3: Zuordnung durch mehrere Spalten mithilfe von Merge mit Left Join

Wenn mehrere Spalten zum Zusammenführen erforderlich sind (z. B. Name und Jahr, Code), verwenden Sie Zusammenführen mit Linksverknüpfung und geben Sie die gewünschten Spalten an.

<code class="python"># Merge by all columns
df = df1.merge(df2, on=['Year', 'Code'], how='left')

# Merge by specified columns
df = df1.merge(df2[['Year', 'Code', 'Val']], on=['Year', 'Code'], how='left')</code>

Umgang mit Fehlern mit doppelten Schlüsseln

In einigen Fällen können doppelte Namenswerte vorhanden sein, was zu einem Fehler führt. Um dieses Problem zu lösen, sollten Sie erwägen, Duplikate zu entfernen oder eine wörterbuchbasierte Zuordnung zu verwenden, um sicherzustellen, dass der letzte übereinstimmende Wert ausgewählt wird.

<code class="python"># Remove duplicates and create a Series for mapping
s = df2.drop_duplicates('Name').set_index('Name')['Val']
df1['New'] = df1['Name'].map(s)</code>

Durch die Verwendung einer dieser Methoden können Sie Datenrahmen effektiv zusammenführen und dabei die Informationen aus dem Primärwert beibehalten Datenrahmen und fehlende Werte mit NaN füllen.

Das obige ist der detaillierte Inhalt vonWie füge ich Datenrahmen zusammen, um fehlende Werte basierend auf einer passenden Spalte anzuhängen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn