2017-05-15 6 views
0

Ich arbeite an einem Pandas Dataframe, eine meiner Spalte ist ein Datum (YYYYMMDD), eine andere ist eine Stunde (HH: MM), ich möchte die beiden Spalten als verketten eine Zeitmarke oder datetime64-Spalte, um diese Spalte später als Index zu verwenden (für eine Zeitreihe). Hier ist die Situation:Verketten zwei Datenrahmen Spalten als ein Zeitstempel

My dataframe

Haben Sie Ideen? Die klassische pandas.to_datetime() scheint nur zu funktionieren, wenn die Spalten Stunden nur, Tag nur und Jahr enthalten nur, ... etc ...

+0

Was sind die Dtypen der 2 Spalten hier? Wenn die erste Spalte ein Str ist, dann sollte 'pd.to_datetime (df ['Datum'] + df ['Zeit'], Format = '% Y% m% d% H:% M:% S') funktionieren – EdChum

+0

Mögliches Duplikat von [Datums- und Uhrzeitspalten mit Python-Pandas kombinieren] (http://stackoverflow.com/questions/17978092/combine-date-and-time-columns-using-python-pandas) – IanS

+0

Es tut mir leid, dass ich nicht t Erwähnen Sie: Die 'date'-Spalte ist ein' int', die 'hour'-Spalte ist bereits eine' datetime.time' – plalanne

Antwort

0

Setup-

df 
Out[1735]: 
    id  date  hour other 
0 1820 20140423 19:00:00  8 
1 4814 20140424 08:20:00  22 

Lösung

import datetime as dt 
#convert date and hour to str, concatenate them and then convert them to datetime format. 
df['new_date'] = df[['date','hour']].astype(str).apply(lambda x: dt.datetime.strptime(x.date + x.hour, '%Y%m%d%H:%M:%S'), axis=1) 

df 
Out[1756]: 
    id  date  hour other   new_date 
0 1820 20140423 19:00:00  8 2014-04-23 19:00:00 
1 4814 20140424 08:20:00  22 2014-04-24 08:20:00 
Verwandte Themen