web-dev-qa-db-fra.com

Pandas - convertir les chaînes en temps sans date

J'ai lu beaucoup de réponses SO mais je ne trouve pas de solution claire.

J'ai ces données dans un df appelé day1 Qui représente les heures:

1    10:53
2    12:17
3    14:46
4    16:36
5    18:39
6    20:31
7    22:28
Name: time, dtype: object>

Je veux le convertir dans un format d'heure. Mais quand je fais ça:

day1.time = pd.to_datetime(day1.time, format='H%:M%')

Le résultat comprend la date d'aujourd'hui:

1   2015-09-03 10:53:00
2   2015-09-03 12:17:00
3   2015-09-03 14:46:00
4   2015-09-03 16:36:00
5   2015-09-03 18:39:00
6   2015-09-03 20:31:00
7   2015-09-03 22:28:00
Name: time, dtype: datetime64[ns]>

Il semble que l'argument format ne fonctionne pas - comment puis-je obtenir l'heure comme indiqué ici sans la date?


Mise à jour

Les formats suivants formulent l'heure correctement, mais d'une manière ou d'une autre, la colonne est toujours un type d'objet. Pourquoi ne se convertit-il pas en datetime64?

day1['time'] = pd.to_datetime(day1['time'], format='%H:%M').dt.time

1    10:53:00
2    12:17:00
3    14:46:00
4    16:36:00
5    18:39:00
6    20:31:00
7    22:28:00
Name: time, dtype: object>
29
RDJ

Après avoir effectué la conversion, vous pouvez utiliser l'accesseur datetime dt pour accéder uniquement au composant hour ou time:

In [51]:

df['hour'] = pd.to_datetime(df['time'], format='%H:%M').dt.hour
df
Out[51]:
        time  hour
index             
1      10:53    10
2      12:17    12
3      14:46    14
4      16:36    16
5      18:39    18
6      20:31    20
7      22:28    22

Aussi votre chaîne de format H%:M% est mal formé, il est susceptible de soulever un ValueError: ':' is a bad directive in format 'H%:M%'

Concernant votre dernier commentaire, le dtype est datetime.time pas datetime:

In [53]:
df['time'].iloc[0]

Out[53]:
datetime.time(10, 53)
30
EdChum

Vous pouvez utiliser to_timedelta

pd.to_timedelta(df+':00')
Out[353]: 
1   10:53:00
2   12:17:00
3   14:46:00
4   16:36:00
5   18:39:00
6   20:31:00
7   22:28:00
Name: Time, dtype: timedelta64[ns]
7
WeNYoBen