Hoe kolommen naar datetime in pandas te converteren


Vaak bent u wellicht geïnteresseerd in het converteren van een of meer kolommen van een Panda DataFrame naar DateTime-indeling. Gelukkig is dit eenvoudig te doen met de functie to_datetime() .

In deze zelfstudie ziet u verschillende voorbeelden van het gebruik van deze functie op het volgende DataFrame:

 import numpy as np
import pandas as pd

#createDataFrame
df = pd.DataFrame({'event': ['A', 'B', 'C'],
                   'start_date': ['20150601', '20160201', '20170401'],
                   'end_date': ['20150608', '20160209', '20170416'] })

#view DataFrame
df

	event start_date end_date
0 A 20150601 20150608
1 B 20160201 20160209
2 C 20170401 201704161

#view column data types
df. dtypes

event object
start_date object
end_date object
dtype:object

Voorbeeld 1: Converteer een enkele kolom naar DateTime

De volgende code laat zien hoe u de kolom ’start_date‘ converteert van een tekenreeks naar de DateTime-notatie:

 #convert start_date to DateTime format
df['start_date'] = pd. to_datetime (df['start_date'])

#view DataFrame
df

        event start_date end_date
0 A 2015-06-01 20150608
1 B 2016-02-01 20160209
2 C 2017-04-01 20170416

#view column date types
df. dtypes

event object
start_date datetime64[ns]
end_date object
dtype:object

Houd er rekening mee dat de functie to_datetime() intelligent is en meestal het juiste datumformaat kan afleiden dat moet worden gebruikt, maar u kunt ook opgeven welk formaat u wilt gebruiken met het format- argument:

 #convert start_date to DateTime format
df['start_date'] = pd. to_datetime (df['start_date'], format=' %Y%m%d ')

#view DataFrame
df

        event start_date end_date
0 A 2015-06-01 20150608
1 B 2016-02-01 20160209
2 C 2017-04-01 20170416

#view column date types
df. dtypes

event object
start_date datetime64[ns]
end_date object
dtype:object

Voorbeeld 2: meerdere kolommen converteren naar DateTime

De volgende code laat zien hoe u de kolommen ’start_date‘ en ‚end_date‘ converteert van tekenreeksen naar DateTime-notaties:

 #convert start_date and end_date to DateTime formats
df[['start_date', 'end_date']] = df[['start_date', 'end_date']]. apply (pd. to_datetime )

#view DataFrame
df

	event start_date end_date
0 A 2015-06-01 2015-06-08
1 B 2016-02-01 2016-02-09
2 C 2017-04-01 2017-04-16

#view column date types
df. dtypes

event object
start_date datetime64[ns]
end_date datetime64[ns]
dtype:object

Voorbeeld 3: Converteer kolommen naar DateTime-notatie met seconden

In sommige gevallen hebt u mogelijk ook kolommen die zowel een datum als uren, minuten en seconden bevatten, zoals het volgende DataFrame:

 #createDataFrame
df = pd.DataFrame({'event': ['A', 'B', 'C'],
                   'start_date': ['20150601043000', '20160201054500', '20170401021215'],
                   'end_date': ['20150608', '20160209', '20170416'] })

#view DataFrame
df

        event start_date end_date
0 A 20150601043000 20150608
1 B 20160201054500 20160209
2 C 20170401021215 20170416

Nogmaals, de functie to_datetime() is slim en kan meestal het juiste formaat afleiden dat moet worden gebruikt zonder dat we dit specificeren:

 #convert start_date to DateTime format
df['start_date'] = pd. to_datetime (df['start_date'])

#view DataFrame
df

        event start_date end_date
0 A 2015-06-01 04:30:00 20150608
1 B 2016-02-01 05:45:00 20160209
2 C 2017-04-01 02:12:15 20170416

#view column date types
df. dtypes

event object
start_date datetime64[ns]
end_date object
dtype:object

Natuurlijk zul je in het wild waarschijnlijk een verscheidenheid aan vreemde DateTime-formaten tegenkomen, dus het kan zijn dat je het format- argument moet gebruiken om Python precies te vertellen welk DateTime-formaat je moet gebruiken.

Raadpleeg in deze gevallen deze pagina voor een volledige lijst met %DateTime-operatoren die u kunt gebruiken om notaties op te geven.

Aanvullende bronnen

Hoe DateTime naar datum te converteren in Pandas
Hoe tekenreeksen te converteren naar zwevend in Panda’s

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert