J'ai des données au format suivant:
Name date1 date2 0 bob 2014-05-12 2014-08-31 1 george 2014-05-15 2014-08-12
Comment manipuler les deux colonnes de date pour obtenir le format suivant?
Résultat attendu:
d = {'Name': ['bob', 'george'], 'date1': ['2014/05/12:12:00:00 AM', '2014/05/15:12:00:00 AM'], 'date2': ['2014/08/31:11:59:59 PM', '2014/08/12:11:59:59 PM']} df = pd.DataFrame(data=d) Name date1 date2 0 bob 2014/05/12:12:00:00 AM 2014/08/31:11:59:59 PM 1 george 2014/05/15:12:00:00 AM 2014/08/12:11:59:59 PM
5 Réponses :
Vous pouvez faire:
Name date1 date2 0 bob 2014-05-12 2014-08-31 1 george 2014-05-15 2014-08-12
Sortie:
dates = ['date1','date2'] df[dates] = df[dates].apply(lambda x:pd.to_datetime(x).dt.normalize())
Essayez ceci:
d = {'Name': ['bob', 'george'], 'date1': ['2014/05/12:12:00:00 AM', '2014/05/15:12:00:00 AM'], 'date2': ['2014/08/31:11:59:59 PM', '2014/08/12:11:59:59 PM']} df = pd.DataFrame(data=d) df['date1'] = pd.to_datetime(df['date1'], format='%Y/%m/%d:%H:%M:%S %p').dt.date df['date2'] = pd.to_datetime(df['date2'], format='%Y/%m/%d:%H:%M:%S %p').dt.date print(df) Name date1 date2 0 bob 2014-05-12 2014-08-31 1 george 2014-05-15 2014-08-12
Utilisez pandas.to_datetime
avec l'argument format
:
df['date1'] = pandas.to_datetime(df['date1'], format='%Y/%m/%d:%H:%M:%S %p')
Documentation Pandas: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas. to_datetime.html
Documentation de mise en forme: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
Utilisez pd.to_datetime code>
avec format
:
In [1177]: df.date1 = pd.to_datetime(df.date1, format='%Y/%m/%d:%I:%M:%S %p').dt.date In [1178]: df.date2 = pd.to_datetime(df.date2, format='%Y/%m/%d:%I:%M:%S %p').dt.date In [1179]: df Out[1179]: Name date1 date2 0 bob 2014-05-12 2014-08-31 1 george 2014-05-15 2014-08-12
Cela fonctionnera puisque vous n'êtes intéressé que par la partie date. La colonne est cependant au format 12 heures et non au format 24 heures.
Voilà:
Name date1 date2 0 bob 2014-05-12 2014-08-31 1 george 2014-05-15 2014-08-12
Résultat:
import pandas as pd from datetime import datetime d = {'Name': ['bob', 'george'], 'date1': ['2014/05/12:12:00:00 AM', '2014/05/15:12:00:00 AM'], 'date2': ['2014/08/31:11:59:59 PM', '2014/08/12:11:59:59 AM']} df = pd.DataFrame(data=d) date_extractor = lambda dts : datetime.strptime(dts, '%Y/%m/%d:%I:%M:%S %p').date() df['date1'] = df['date1'].apply(date_extractor) df['date2'] = df['date2'].apply(date_extractor) print(df)
Voulez-vous que les dates soient des horodatages ou simplement des chaînes?