2017-12-26 8 views
1

Wie kann ich ersetzen NaT von einem Datenrahmen mit einem Datum/Variable, die zuvor erstellt wurde (Setup)?Ersetzen NaT in einem Datenrahmen mit einer vorherigen Variablen

Ich habe die folgende Datenrahmen:

 Date   Name   CF 
0  NaT   Peter  -10 
0 2017-12-14   Peter  -20 
1  NaT   Tomas  -5.5 
1 2017-12-15   Peter  -25 
2  NaT   Tomas  -3 
2 2017-12-14   Tomas  -5 
3  NaT   Walker  -4.6 
3 2017-12-15   Tomas  88 
4 2017-12-15   Tomas  -30 
5 2017-12-15   Walker  15 

Ich möchte NaT mit einer Variablen ersetzen, die am Anfang meines Projekts eingerichtet wurde: eine End Variable wie folgt aus:

format_date = "%d-%m-%Y" 
end = datetime.date(2017, 12, 15) 

I versuchte zwei Ansätze: Erstens habe ich np.where von Pandas verwendet, aber es erkennt nicht die NaT. Zweitens habe ich versucht, dieses

test = table_final2.Date.astype(object).where(table_final2.Date.notnull(), end)

aber dies führt zu einer Mischung von Formaten für die Spalte Date

  Date    Name  CF 
0   2017-12-15  Peter -10 
0 2017-12-14 00:00:00  Peter -20 
1   2017-12-15  Tomas -5.5 
1 2017-12-15 00:00:00  Peter -25 
2   2017-12-15  Tomas -3 
2 2017-12-14 00:00:00  Tomas -5 
3   2017-12-15  Walker -4.6 
3 2017-12-15 00:00:00  Tomas  88 
4 2017-12-15 00:00:00  Tomas -30 
5 2017-12-15 00:00:00  Walker 15 

Also, wie kann ich NaT genau ersetzen? Vielen Dank im Voraus!

PD: wenn test.dtypes Date als Objekt anzeigt.

Antwort

1

IIUC können Sie Series.fillna() Methode verwenden:

In [138]: end = pd.to_datetime('2017-12-15') 

In [139]: df['Date'] = df['Date'].fillna(end) 

In [140]: df 
Out[140]: 
     Date Name CF 
0 2017-12-15 Peter -10.0 
0 2017-12-14 Peter -20.0 
1 2017-12-15 Tomas -5.5 
1 2017-12-15 Peter -25.0 
2 2017-12-15 Tomas -3.0 
2 2017-12-14 Tomas -5.0 
3 2017-12-15 Walker -4.6 
3 2017-12-15 Tomas 88.0 
4 2017-12-15 Tomas -30.0 
5 2017-12-15 Walker 15.0 
+0

Schöne! Danke vielmals! – newbie

+0

@newbie, Sie sind herzlich willkommen! :-) – MaxU

Verwandte Themen