2 回答

TA貢獻1155條經驗 獲得超0個贊
我認為您可能忽略了組合偏移量別名。
四舍五入100L
應該在您的情況下給出正確的答案。100L
將使用 100 毫秒(或 0.1 秒)的仲裁進行舍入,這正是您在這種情況下所需要的。您正在使用1L
,這已經是數據框中的默認值。
df = pd.DataFrame({
? ? 'time' : ['2019-08-02 09:50:10.040','2019-08-02 09:50:10.080','2019-08-02 09:50:10.170','2019-08-02 09:50:10.180'],? ? ? ? ? ? ? ? ??
? ? ? ? })
df['time'] = pd.to_datetime(df['time'])
df['time'] = df.time.dt.round('100L')
輸出是:
0? ?2019-08-02 09:50:10.000
1? ?2019-08-02 09:50:10.100
2? ?2019-08-02 09:50:10.200
3? ?2019-08-02 09:50:10.200
額外的零不能被截斷,但在計算方面,您將獲得預期的結果。

TA貢獻1895條經驗 獲得超3個贊
一種解決方案是:
df["time"] = df.time.dt.round("100ms")
輸出
time
0 2019-08-02 09:50:10.000
1 2019-08-02 09:50:10.100
2 2019-08-02 09:50:10.200
3 2019-08-02 09:50:10.200
以下是所有有效字符串:
'A': 'A-DEC',
'AS': 'AS-JAN',
'BA': 'BA-DEC',
'BAS': 'BAS-JAN',
'BY': 'BA-DEC',
'BYS': 'BAS-JAN',
'Min': 'T',
'Q': 'Q-DEC',
'W': 'W-SUN',
'Y': 'A-DEC',
'YS': 'AS-JAN',
'min': 'T',
'ms': 'L',
'ns': 'N',
'us': 'U',
添加回答
舉報