数组上的熊猫时间戳

时间:2016-03-14 13:09:58

标签: pandas

Pandas不会将我的数组转换为Timestamps数组:

a = np.array([1457392827660434006, 1457392828660434012,  1457392829660434023,1457474706167386148])
pd.Timestamp(a)

发出错误:

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

尽管在数组元素上循环可以正常工作:

for i in range(4):
    t = pd.Timestamp(a[i])
    print t

给出:

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

正如所料。

此外,当该数组是csv文件中的第一列时,即使我正确指定了parse_date,它也不会自动解析为TimeStamp。

请帮忙吗?

1 个答案:

答案 0 :(得分:2)

我认为你可以使用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']