Je veux juste extraire de mon df HH: MM. Comment faire?
Voici une description de la colonne dans le df:
count 810 unique 691 top 2018-07-25 11:14:00 freq 5 Name: datetime, dtype: object
La valeur de la chaîne comprend un horodatage complet. Le but est d'analyser le HH: MM de chaque ligne dans un autre df, et de revenir en boucle et d'extraire uniquement le % Y-% m-% d dans un autre df.
3 Réponses :
Première conversion en datetime:
df2['datetime'] = df['datetime'].dt.strptime('%H:%M')
df3['datetime'] = df['datetime'].dt.strptime('%Y-%m-%d')
Ensuite, vous pouvez faire:
df['datetime'] = pd.to_datetime(df['datetime'])
Quelle hypothèse faites-vous ici? D'où vient le dt ? Cela se traduit par une AttributeError pour moi. Si je fais à partir de datetime import datetime en tant que dt , cela se traduit par un objet DatetimeProperties n'a pas d'attribut strptime .
Je ne peux pas mettre à jour mon commentaire, alors comprenez le dt maintenant - c'est l'accesseur. strftime est uniquement disponible, pas strptime
Solution générale (non basée sur les pandas)
11:14
Sortie
import time
top = '2018-07-25 11:14:00'
time_struct = time.strptime(top, '%Y-%m-%d %H:%M:%S')
short_top = time.strftime('%H:%M', time_struct)
print(short_top)
Supposons que le df ressemble à
print(df)
date_col
0 2018-07-25 11:14:00
1 2018-08-26 11:15:00
2 2018-07-29 11:17:00
#convert from string to datetime
df['date_col'] = pd.to_datetime(df['date_col'])
#to get date only
print(df['date_col'].dt.date)
0 2018-07-25
1 2018-08-26
2 2018-07-29
#to get time:
print(df['date_col'].dt.time)
0 11:14:00
1 11:15:00
2 11:17:00
#to get hour and minute
print(df['date_col'].dt.strftime('%H:%M'))
0 11:14
1 11:15
2 11:17