2017-11-15 1 views
1

Ich benutze Pandas DataFrame als ein leichtes Dataset, um einige Status zu halten und müssen dynamisch/kontinuierlich neue DataFrames in bestehende Tabelle zusammenführen. Sagen, ich habe zwei Datensätze wie folgt:Merge zwei Pandas Datenrahmen und überspringen gemeinsame Spalten von rechts

df1:

a b 
0 0 1 
1 2 3 
2 4 5 
3 6 7 
4 8 9 

df2:

b c 
0 10 11 
1 12 13 
2 14 15 
3 16 17 
4 18 19 

I df2 df1 (auf Index) zusammenführen möchten, und für die Spalten gemeinsam (in diesem Fall, es ist "b"), verwerfen einfach die gemeinsame Spalte von DF2.

a b c 
0 0 1 11 
1 2 3 13 
2 4 5 15 
3 6 7 17 
4 8 9 19 

Mein Code war die Überprüfung gemeinsamen Teil zwischen DF1 und DF2 durch SET verwenden, so dass ich manuell gemeinsamen Teil in df2 fallen. Ich frage mich, gibt es einen sehr effizienten Weg, dies zu tun?

+0

Sie können einfach concat, pd.concat ([df1, df2 ['c']], Achse = 1) – Vaishali

Antwort

3

zuerst die Spalten in df2 identifizieren nicht in df1

cols = df2.columns.difference(df1.columns) 

Dann pd.DataFrame.join

df1.join(df2[cols]) 

    a b c 
0 0 1 11 
1 2 3 13 
2 4 5 15 
3 6 7 17 
4 8 9 19 

Oder pd.concat funktioniert auch

pd.concat([df1, df2[cols]], axis=1) 

    a b c 
0 0 1 11 
1 2 3 13 
2 4 5 15 
3 6 7 17 
4 8 9 19 
+0

Danke, das funktioniert für mich. –

3

Pandas Funktion verschmelzen auch Wunder wirken. Sie können es als tun:

pd.merge(left=df1, right=df2, how='inner') 

    a b c 
0 0 1 11 
1 2 3 13 
2 4 5 15 
3 6 7 17 
4 8 9 19 

durch den Wegfall der ‚auf‘ Attribut der Merge-Funktion wird es die Spalten berücksichtigen, die in beiden der Datenrahmen in-üblich sind.

Verwandte Themen