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

11voto

jpp Points 83462

Vous pouvez également convertir en datetime sans concaténation de chaîne, en combinant to_datetime et to_timedelta qui créent datetime et timedeltea respectivement. Combiné avec pd.DataFrame.pop vous pouvez retirer la série source simultanément :

df['DateTime'] = pd.to_datetime(df.pop('Date')) + pd.to_timedelta(df.pop('Time'))

print(df)

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

print(df.dtypes)

DateTime    datetime64[ns]
dtype: object

6voto

toto_tico Points 2014

La réponse Cela dépend vraiment de vos types de colonnes . Dans mon cas, j'avais datetime et timedelta .

> df[['Date','Time']].dtypes
Date     datetime64[ns]
Time    timedelta64[ns]

Si c'est votre cas, il vous suffit d'ajouter les colonnes :

> df['Date'] + df['Time']

5voto

queise Points 740

Assurez-vous d'abord d'avoir les bons types de données :

df["Date"] = pd.to_datetime(df["Date"])
df["Time"] = pd.to_timedelta(df["Time"])

Vous pouvez ensuite les combiner facilement :

df["DateTime"] = df["Date"] + df["Time"]

4voto

Stephen Points 169

Utilisez le combine fonction :

datetime.datetime.combine(date, time)

4voto

Janzaib Masood Points 371

Voici une phrase pour le faire. Il suffit de concaténer les deux chaînes dans chacune des colonnes avec un espace " " entre les deux.

Disons que df est votre cadre de données et que les colonnes sont 'Time' et 'Date'. Et votre nouvelle colonne est DateAndTime.

df['DateAndTime'] = df['Date'].str.cat(df['Time'],sep=" ")

Et si vous voulez également gérer des entrées comme des objets de type date, vous pouvez faire ceci. Vous pouvez modifier le formatage en fonction de vos besoins.

df['DateAndTime'] = pd.to_datetime(df['DateAndTime'], format="%m/%d/%Y %I:%M:%S %p")

Santé ! Joyeux Data Crunching.

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