2016-04-08 9 views
0

Meine Datenrahmen wie folgt aussieht:Python Pandas gelten date_range auf zwei Säulen

df[['reported_date', 'current_date']].head() 
    reported_date  current_date 
0 2016-01-15 13:58:21 2016-01-18 00:00:00 
1 2016-01-14 10:51:24 2016-01-18 00:00:00 
2 2016-01-15 15:17:35 2016-01-18 00:00:00 
3 2016-01-17 17:07:10 2016-01-18 00:00:00 
4 2016-01-17 17:08:23 2016-01-18 00:00:00 

I Datum Subtraktion anwenden können direkt wie:

df[['reported_date', 'current_date']].head().apply(lambda x: x[1]-x[0], axis=1) 

aber wenn ich date_range zu bekommen das Intervall anzuwenden versucht, zwischen die Tage bekam ich folgende Fehlermeldung

df[['reported_date', 'current_date']].head().apply(lambda x: pd.date_range(x[0], x[1], freq='B'), axis=1) 

"ValueError: Length of values does not match length of index" 

Also, was ist der richtige Weg istanzuwendenzu zwei Spalten von datetime?

Vielen Dank im Voraus.

jian

Antwort

1

pd.date_range kein Intervall zurück. Es gibt eine Reihe (DateTimeIndex wirklich) von alle Datetime Objekte zwischen Start und Ende zurück. Seit Start ist reported_date hier und ist variabel, während das Ende ist current_date und ist behoben, erhalten Sie eine Reihe von verschiedenen Längen, die offensichtlich nicht gut in eine einzige (neue) Spalte passen.

Die Subtraktion, die Sie zuvor verwenden, gibt Ihnen das Intervall zwischen den Daten. Es gibt also keinen Grund, pd.date_range zu verwenden: x[1] - x[0] macht genau das, was Sie wollen.

+0

Danke, Evert, es ist die Länge des zurückgegebenen DateTimeIndex, die ich will. – JDai

Verwandte Themen