2017-06-27 4 views
0

Ich habe zwei datetime Spalten. Eine Spalte enthält alle gültigen Daten und die andere Spalte enthält keine Datumsfelder, daher gibt es einige NaT. Das Problem ist, dass ich den Unterschied zwischen 2 Spalten nehmen muss, aber immer wenn NaT Wert in der zweiten Spalte ist, sollte die resultierende Spalte sehr großen Wert sagen 100000. Hier ist das Beispiel:Python: Datumsunterschied, wenn ein Datum ist NAT

Eingabedaten:

signup_date bgc_date 
2016-01-02 NaT 
2016-01-21 NaT 
2016-01-11 2016-01-11 
2016-01-29 2016-01-30 

Erwartete Ausgabe

`signup_date bgc_date   difference 
2016-01-02  NaT     100000 
2016-01-21  NaT     100000 
2016-01-11 2016-01-11    0 
2016-01-29 2016-01-30    1` 

Was habe ich versucht:

for i in range(len(df2)): 
if pd.notnull(df2[i]['bgc_date']): 
    df2[i]['diff'] = df2[i]['bgc_date']- df2[i]['signup_date'] 
else: 
    df2[i]['diff']=10000 

Dies führt jedoch zu einem Fehler. Kann jemand pls helfen.

Antwort

0

Sie können die beiden Spalten subtrahieren und dann fehlende Werte mit Zeit Delta füllen:

(df.bgc_date - df.signup_date).fillna(pd.Timedelta(days=10000)).dt.days 

#0 10000 
#1 10000 
#2  0 
#3  1 
#dtype: int64 
+0

ich diesen Fehler: 'Typeerror: Datentyp„Datumzeit“nicht understood' – user4943236

+0

Können Sie ein wenig diagnostizieren Auf welchen Teil wirft der Fehler? Stellen Sie sicher, dass beide Spalten "bgc_date" und "signup_date" vom Datentyp "Datum" sind. Wenn Sie 'pd.to_datetime' nicht zum Konvertieren verwenden. – Psidom

Verwandte Themen