您可以使用pd.Timedelta将纳秒添加到日期时间.
考虑这个例子:
In [57]: dt = datetime.datetime(2015,8,01,9,30,15,150000)
In [58]: print dt
2015-08-01 09:30:15.150000
In [60]: pd.Timestamp(dt)
Out[60]: Timestamp('2015-08-01 09:30:15.150000')
In [62]: pd.Timestamp(dt) + pd.Timedelta(888)
Out[62]: Timestamp('2015-08-01 09:30:15.150000888')
Run Code Online (Sandbox Code Playgroud)
这也适用于一系列时间戳:
In [63]: s = pd.Series([dt, dt])
In [64]: s
Out[64]:
0 2015-08-01 09:30:15.150
1 2015-08-01 09:30:15.150
dtype: datetime64[ns]
In [65]: s + pd.Timedelta(888)
Out[65]:
0 2015-08-01 09:30:15.150000888
1 2015-08-01 09:30:15.150000888
dtype: datetime64[ns]
In [66]: s_nano = pd.Series([pd.Timedelta(888), pd.Timedelta(999)])
In [67]: s + s_nano
Out[67]:
0 2015-08-01 09:30:15.150000888
1 2015-08-01 09:30:15.150000999
dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
从一系列整数纳秒开始,您可以轻松地将其转换为timedelta:
In [71]: pd.to_timedelta(s_nano, unit='ns')
Out[71]:
0 00:00:00.000000
1 00:00:00.000000
dtype: timedelta64[ns]
In [72]: pd.to_timedelta(s_nano, unit='ns').values
Out[72]: array([888, 999], dtype='timedelta64[ns]')
Run Code Online (Sandbox Code Playgroud)
它在系列repr中只显示零的原因似乎是熊猫中的一个错误,因为值是正确的.