2016-08-05 4 views
0

I 2 Spalten mit Daten in sie haben, ich möchte eine dritte Spalte mit der max dieser 2 Tage, erstellen:maximal zwei Tage, kommt in einem ganz anderen Format

df['xxx_MaxSettDate'][0] 
Out[186]: Timestamp('2017-01-20 00:00:00') 
df['yyy_MaxSettDate'][0] 
Out[166]: NaT 

hier ist mein Max-Funktion:

df['MaxSettDate']=df[['xxx_MaxSettDate','yyy_MaxSettDate']].max(axis=1) 

Ausgang:

df['MaxSettDate'][0] 
Out[187]: 1.4848704e+18 

ich an diesem Tag zu tun Betrieb in der Lage sein wollen, wie alle Daten entfernen, die niedriger sind als 1 m

so dass ich dies tun:

onemonthdate = date.today() + timedelta(30) 
df = df[(df['MaxSettDate']>onemonthdate)] 

Dies führt zu dem Fehler:

TypeError: unorderable types: float() > datetime.date() 

Gedanken darüber, wie ich erreichen könnte dies pls? Ich bin sehr verwirrt über all die Lösungen zur Verfügung gestellt .. Sie könnten auch zeigen Sie mir etwas, das ich lesen konnte und das gesamte Datum Paradigma in Python besser verstehen .. Danke vm!

+1

Der Datentyp von 'df ['MaxSettDate']' und 'onemonthdate' ist unterschiedlich, also der' TypeError'. Konvertieren Sie entweder den gleichen Typ, bevor Sie die logische Operation '>' ausführen. – Eduard

+0

In der Tat, was ich versuche zu verstehen .. Wie mache ich das? – spiff

+1

Nun, entweder suchen Sie entweder nach 'Float zu Datetime Python konvertieren' http://StackOverflow.com/Questions/6706231/Fetching-DatumZeit-von-Float-und-Vice-Versa-in-Python oder 'Konvertieren Sie Datetime zu Float Python ', die mit dem Float-Format von Pandas übereinstimmen sollte. – Eduard

Antwort

1

UPDATE:

können Sie Ihre MaxSettDate Spalte konvertieren zuerst in Datetime:

df['MaxSettDate'] = pd.to_datetime(df['MaxSettDate']) 

Demo:

In [41]: pd.to_datetime(1.4848704e+18) 
Out[41]: Timestamp('2017-01-20 00:00:00') 

OLD amswer:

Ich würde für die Pandas Timedelta verwenden :

+0

Danke! Dies wäre in der Tat die taktische Lösung hier .. Wird das jetzt anwenden. Aber wenn ich das Format selbst ändern würde, wie würde das gehen? – spiff

+1

@spiff, können Sie eine Ausgabe von: 'print (df.dtypes)'? – MaxU

+0

'Typ (df [xxx_MaxSettDate '] [0]) Out [194]: pandas.tslib.Timestamp' ' Typ (df [' MaxSettDate '] [12]) Out [199]: numpy.float64' – spiff

Verwandte Themen