Pandas 不会将我的数组转换为时间戳数组:
a = np.array([1457392827660434006, 1457392828660434012, 1457392829660434023,1457474706167386148])
pd.Timestamp(a)
Run Code Online (Sandbox Code Playgroud)
给出一个错误:
TypeError Traceback (most recent call last)
<ipython-input-42-cdf0e494942d> in <module>()
1 a = np.array([1457392827660434006, 1457392828660434012, 1457392829660434023,1457474706167386148])
----> 2 pd.Timestamp(a)
pandas/tslib.pyx in pandas.tslib.Timestamp.__new__ (pandas/tslib.c:8967)()
pandas/tslib.pyx in pandas.tslib.convert_to_tsobject (pandas/tslib.c:23508)()
TypeError: Cannot convert input to Timestamp
Run Code Online (Sandbox Code Playgroud)
而数组元素上的循环工作得很好:
for i in range(4):
t = pd.Timestamp(a[i])
print t
Run Code Online (Sandbox Code Playgroud)
给出:
2016-03-07 23:20:27.660434006
2016-03-07 23:20:28.660434012
2016-03-07 23:20:29.660434023
2016-03-08 22:05:06.167386148
Run Code Online (Sandbox Code Playgroud)
正如预期的那样。
此外,当该数组是 csv 文件中的第一列时,即使我正确指定了 parse_date,它也不会自动解析为时间戳。
有什么帮助吗?
我认为你可以使用to_datetime然后如果你需要array values:
import pandas as pd
import numpy as np
a = np.array([1457392827660434006, 1457392828660434012,
1457392829660434023,1457474706167386148])
print pd.to_datetime(a).values
['2016-03-08T00:20:27.660434006+0100' '2016-03-08T00:20:28.660434012+0100'
'2016-03-08T00:20:29.660434023+0100' '2016-03-08T23:05:06.167386148+0100']
print pd.to_datetime(a, unit='ns').values
['2016-03-08T00:20:27.660434006+0100' '2016-03-08T00:20:28.660434012+0100'
'2016-03-08T00:20:29.660434023+0100' '2016-03-08T23:05:06.167386148+0100']
Run Code Online (Sandbox Code Playgroud)