2017-03-09 8 views
0

Ich habe folgende Pandas Datenrahmen:Pandas Datenrahmen Update Spalte

>>> df1 
    Col1 Col2  Col3 
0 A a 2017-02-28 
1 B b 2017-02-28 
2 C c 2017-03-08 
3 D d 2017-02-28 

>>> df2 
    Col1 Col2  Col3 
0 B b 2017-03-05 
1 C c 2017-03-05 
2 D d 2017-03-05 

und ich möchte df1.Col3 mit den Daten von df2.Col3 aktualisieren, wenn das Datum der df2.Col3 die neuere ist die Antwort zu haben:

>>> df1 
    Col1 Col2  Col3 
0 A a 2017-02-28 
1 B b 2017-03-05 
2 C c 2017-03-08 
3 D d 2017-03-05 

Irgendeine Idee, wie man das löst?

Antwort

0

Es sieht so aus, als ob Sie es gewohnt sind, R zu verwenden. Die Syntax zum Auswählen einer Spalte in Pandas lautet entweder df.Col1 oder df['Col1'].

Sie können die beiden Datenrahmen verketten, nach Col3 sortieren und dann die Duplikate der Kombination ['Col1','Col2'] löschen. Sie müssen Col3 in Datetime-Objekte konvertieren, wenn Sie nicht bereits haben.

> df1.Col3 = pd.to_datetime(df1.Col3) 
> df2.Col3 = pd.to_datetime(df2.Col3) 
> (pd.concat((df1, df2)) 
     .reset_index(drop=True) 
     .sort_values('Col3') 
     .drop_duplicates(['Col1','Col2'], keep='last')) 

#returns: 
    Col1 Col2  Col3 
0 A a 2017-02-28 
4 B b 2017-03-05 
6 D d 2017-03-05 
2 C c 2017-03-08 
Verwandte Themen