Je pense que vous devez convertir votre chaîne dans un timedelta avec pd.to_timedelta
et puis profitez de l'excellent accesseur dt avec la méthode floor qui tronque en fonction de la ficelle. Voici les deux premières lignes de vos données.
df['how_long_it_took_to_order'] = pd.to_timedelta(df['how_long_it_took_to_order'])
df['how_long_it_took_to_order'].dt.floor('s')
0 00:19:58
1 00:25:09
Peut arrondir au centième de seconde.
df['how_long_it_took_to_order'].dt.floor('10ms')
0 00:19:58.580000
1 00:25:09.100000
Ici, je crée une une série d'timedeltas puis utilisez l'accesseur dt
avec la méthode floor
tronquer jusqu'à la plus proche microseconde.
d = pd.timedelta_range(0, periods=6, freq='644257us')
s = pd.Series(d)
s
0 00:00:00
1 00:00:00.644257
2 00:00:01.288514
3 00:00:01.932771
4 00:00:02.577028
5 00:00:03.221285
dtype: timedelta64[ns]
tronquer
s.dt.floor('s')
0 00:00:00
1 00:00:00
2 00:00:01
3 00:00:01
4 00:00:02
5 00:00:03
dtype: timedelta64[ns]
Si vous voulez tronquer au centième près d'une seconde faire:
s.dt.floor('10ms')
0 00:00:00
1 00:00:00.640000
2 00:00:01.280000
3 00:00:01.930000
4 00:00:02.570000
5 00:00:03.220000
dtype: timedelta64[ns]
Vous devriez envisager de modifier vos données à timedelta ou un horodatage (si vous avez la date avec) à partir de la chaîne. Il n'y a pas de bonne raison de le garder comme une ficelle. Ensuite, vous pouvez utiliser l'excellent accesseur 'dt' avec la méthode' floor' pour tronquer. Vois ma réponse. –