我在pandas.Series.dt.round
中发现了不一致的行为:
import pandas as pd
from datetime import datetime
d=pd.DataFrame(data=[[datetime(2010,1,1,23,14,12,599), 2], [None, 4]], columns=['dtime', 'int'])
print d['dtime'].dt.round('s')
0 2010-01-01 23:14:12
1 NaT
Name: dtime, dtype: datetime64[ns]
print d['dtime'].dt.round('5s')
0 2010-01-01 23:14:10.000000000
1 2262-04-10 00:12:44.999999488 # what?
Name: dtime, dtype: datetime64[ns]
print d['dtime'].dt.round('min')
0 2010-01-01 23:14:00
1 2262-04-10 00:13:00 # again???
Name: dtime, dtype: datetime64[ns]
所以,在第一种情况下(freq参数's')保留NaT(我会说,正如我所料)。然而,在第二和第三种情况下,NaT被转换为一些看似奇怪的日期时间。 更别说其他解决方案了,有人更了解这个(貌似)的错误吗?或者我是否会错过某些(隐藏)功能,或者讨论主题的一些(甚至更隐蔽的)链接?