如何在Pandas.Series中添加时间戳?

时间:2014-01-14 19:11:16

标签: python pandas

我正在尝试使用时间戳字段start创建Pandas Series对象:

a = pd.Series(index=['preceding_id', 'file', 'start'],  dtype=[np.int, np.str, np.datetime64], )

它以

失败
TypeError: data type not understood

有人可以解释一下我做错了什么吗? 我一直在寻找熊猫中的日期和日期时间对象,但是文档只说明如何将它用作索引 - 这不是我想要的......

谢谢!

2 个答案:

答案 0 :(得分:4)

系列只能有一种数据类型。如果要在一个系列中存储多个类型,则Series的类型将为object,即通用Python类型。

In [12]: Series([1, 'some string', pd.to_datetime('2014-01-01')])
Out[12]: 
0                      1
1            some string
2    2014-01-01 00:00:00
dtype: object

这没问题。保留组成元素的类型。例如,上面系列中的时间戳仍然是一个时间戳,我们可以通过访问它看到。

In [13]: Series([1, 'some string', pd.to_datetime('2014-01-01')])[2]
Out[13]: Timestamp('2014-01-01 00:00:00', tz=None)

因此,总之,不要指定数据类型。一般来说,如果没有你的帮助,它们将得到妥善处理。

答案 1 :(得分:0)

您确定不需要数据框吗?

如果是这样,它看起来像是:

data = {'preceeding_id': [list of ids],
        'file': [list of files], 
        'start': [list of timestamps]}

df = pd.DataFrame(data)
df.start = pd.to_datetime(df.start)

或者,如果您正在从文件或其他内容中读取数据,则可以轻松地将parse_dates=True用于大多数pandas的I / O功能。实际上,Pandas在分配正确的dtype方面非常棒。