178 votes

Combiner les colonnes de date et d'heure en utilisant python pandas

J'ai un dataframe pandas avec les colonnes suivantes :

data = {'Date': ['01-06-2013', '02-06-2013', '02-06-2013', '02-06-2013', '02-06-2013', '03-06-2013', '03-06-2013', '03-06-2013', '03-06-2013', '04-06-2013'],
        'Time': ['23:00:00', '01:00:00', '21:00:00', '22:00:00', '23:00:00', '01:00:00', '21:00:00', '22:00:00', '23:00:00', '01:00:00']}
df = pd.DataFrame(data)

         Date      Time
0  01-06-2013  23:00:00
1  02-06-2013  01:00:00
2  02-06-2013  21:00:00
3  02-06-2013  22:00:00
4  02-06-2013  23:00:00
5  03-06-2013  01:00:00
6  03-06-2013  21:00:00
7  03-06-2013  22:00:00
8  03-06-2013  23:00:00
9  04-06-2013  01:00:00

Comment puis-je combiner data['Date'] & data['Time'] pour obtenir ce qui suit ? Y a-t-il un moyen de le faire en utilisant pd.to_datetime ?

Date
01-06-2013 23:00:00
02-06-2013 01:00:00
02-06-2013 21:00:00
02-06-2013 22:00:00
02-06-2013 23:00:00
03-06-2013 01:00:00
03-06-2013 21:00:00
03-06-2013 22:00:00
03-06-2013 23:00:00
04-06-2013 01:00:00

2voto

tgbrooks Points 177

Mon jeu de données contenait des données à résolution d'une seconde pour quelques jours et l'analyse par les méthodes suggérées ici était très lente. A la place, j'ai utilisé :

dates = pandas.to_datetime(df.Date, cache=True)
times = pandas.to_timedelta(df.Time)
datetimes  = dates + times

Notez l'utilisation de cache=True rend l'analyse des dates très efficace car il n'y a que quelques dates uniques dans mes fichiers, ce qui n'est pas vrai pour une colonne combinant date et heure.

2voto

hacknull Points 109

DATA :

<PIEDS>,<PIEDS>, <DATE>,<TIME> ,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL> SPFB.RTS,1, 20190103,100100 ,106580.0000000,107260.0000000,106570.0000000,107230.0000000,3726

CODE :

data.columns = ['ticker', 'per', 'date', 'time', 'open', 'high', 'low', 'close', 'vol']    
data.datetime = pd.to_datetime(data.date.astype(str) + ' ' + data.time.astype(str), format='%Y%m%d %H%M%S')

-2voto

dl.meteo Points 548

Je pense que la meilleure solution est d'analyser les dates à l'intérieur du fichier read_csv (ou d'autres fonctions read_) directement. Il n'est pas évident de gérer deux colonnes dans le date_parser mais voilà :

date_parser = lambda x,y: datetime.strptime(f"{x}T{y}", "%d-%m-%YT%H:%M:%S")
date = pd.read_csv('data.csv', parse_dates={'date': ['Date', 'Time']}, date_parser=date_parser)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X