Python verschmelzen zwei Datenrahmen mit überlappenden Komponenten und hält die ursprüngliche Reihenfolge von jedemPython

Python-Programme
Anonymous
 Python verschmelzen zwei Datenrahmen mit überlappenden Komponenten und hält die ursprüngliche Reihenfolge von jedem

Post by Anonymous »

Ich habe zwei Datenrahmen wie unten. Einige der Bereiche1_Name und Area2_Name überlappen, und ich versuche, die beiden Bereichsnamen in einer langen Liste zu kombinieren.

Code: Select all

df1 = pd.DataFrame({'area1_index': [0,1,2,3,4,5], 'area1_name': ['AL','AK','AZ','AR','CA','CO']})

df2 = pd.DataFrame({'area2_index': [0,1,2,3,4,5,6], 'area2_name': ['MN','AL','CT','TX','AK','AR','CA']})
< /code>
Was ich irgendwann möchte, ist Folgendes: < /p>
final = pd.DataFrame({'area1_index': [nan,0,nan,nan,1,2,3,4,5], 'area1_name': [nan,'AL',nan,nan,'AK','AZ','AR','CA','CO'], 'area2_index': [0,1,2,3,4,nan,5,6,nan], 'area2_name':['MN','AL','CT','TX','AK',nan,'AR','CA',nan]})
< /code>
Mein erster Gedanke war es, die überlappenden Bereichsnamen zu identifizieren, dem überlappenden DataFrame und dem fehlenden Datenframe zu beitreten, wie unten: < /p>
df1_df2_overlap = pd.DataFrame({'area1_index': [0,1,3,4], 'area2_index': [1,4,5,6], 'area1_name': ['AL','AK','AR','CA']})
df2_missing = pd.DataFrame({'area2_index': [0,2,3], 'area2_name': ['MN','CT','TX']})

df3 = pd.merge(df1, df2, "outer")
df4 = pd.merge(df3, df2_missing, "outer")
Aber dies sortiert alles nach reichen2_index . Ich habe versucht, das Argument .sort_values ​​() mit dem by = ['seq2_index', 'seq1_index'] zu fügen, hatte aber das gleiche Ergebnis. Wie kann ich das so bestellen, wie ich es will? Oder gibt es eine bessere Möglichkeit, DF1 und df2 zu kombinieren, ohne die überlappenden/fehlenden Komponenten identifizieren zu müssen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post