2017-05-09 4 views
1

ich zusammen Daten von zwei Datenrahmen auf diese Weise hinzufügen möchten:Wie kann ich die Daten von zwei Datenrahmen hinzufügen zusammen

>>> df1 = pd.DataFrame({'col1': [1, 2, 3], 'col2': [2, 3, 2], 
'col3': ['aaa', 'bbb', 'ccc']}) 
>>> df1 
    col1 col2 col3 
0  1  2 aaa 
1  2  3 bbb 
2  3  2 ccc 

    >>> df2 = pd.DataFrame({'col1': [4, 4, 5], 'col2': [4, 4, 5], 
'col3': ['some', 'more', 'third']}) 

>>> df2 
    col1 col2 col3 
0  4  4 some 
1  4  4 more 
2  5  5 third 

ich das Ergebnis sein möchte:

>>> result 
    col1 col2 col3 
0  4  4 some 
1  4  4 more 
2  9  7 third 
3  1  2 aaa 
4  2  3 bbb 

Das heißt : Wenn es ein col3 gibt, das den gleichen Wert hat, dann soll col1 + col2 für diesen Eintrag zusammen addiert werden. Wenn es nicht existiert, sollten die Zeilen nur angefügt werden. Die Reihenfolge der Zeilen ist nicht wichtig, und ich brauche nicht df1 und df2, ich kümmere mich nur um das Ergebnis danach.

Was ist der beste Weg, dies zu erreichen?

Die Daten, die ich gerade von verschiedenen CSV-Dateien geladen habe, die genau so aussehen, also gibt es vielleicht eine alternative Möglichkeit, es auch zu tun? Das Ergebnis möchte ich nur noch einmal als CSV-Datei speichern, die wie oben aussieht.

Antwort

2

Verwenden wir pd.concat und groupby, um Werte zu summieren.

pd.concat([df1,df2]).groupby('col3').sum().reset_index().reindex_axis(['col1','col2','col3'],axis=1) 

Ausgang:

col1 col2 col3 
0  1  2 aaa 
1  2  3 bbb 
2  4  4 more 
3  4  4 some 
4  9  7 third 
Verwandte Themen