Ich glaube, Sie brauchen Ihre Zeichenfolge zu konvertieren, um eine Timedelta mit pd.to_timedelta
und dann nutzen Sie den exzellenten dt-Accessor mit der floor-Methode, die basierend auf string abschneidet. Hier sind die ersten zwei Zeilen Ihrer Daten.
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
Kann auf die Hundertstelsekunde runden.
df['how_long_it_took_to_order'].dt.floor('10ms')
0 00:19:58.580000
1 00:25:09.100000
Hier erstelle ich einige eine Reihe von timedeltas und verwenden Sie dann den dt
Accessor mit dem floor
Verfahren zur nächstgelegenen Mikrosekunde trunkieren nach unten.
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]
Jetzt
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]
gestutzt Wenn Sie auf den nächsten hundertstel Sekunde tun dies gestutzt werden soll:
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]
Sie berücksichtigen sollten, um Ihre Daten zu Timedelta oder einem Zeitstempel zu ändern (wenn Sie haben das Datum zusammen mit) von String. Es gibt keinen guten Grund, es als String zu behalten. Dann können Sie den ausgezeichneten 'dt'-Accessor mit der' floor'-Methode zum Abschneiden verwenden. Siehe meine Antwort. –