我正在尝试使用时间戳字段start
创建Pandas Series对象:
a = pd.Series(index=['preceding_id', 'file', 'start'], dtype=[np.int, np.str, np.datetime64], )
它以
失败TypeError: data type not understood
有人可以解释一下我做错了什么吗? 我一直在寻找熊猫中的日期和日期时间对象,但是文档只说明如何将它用作索引 - 这不是我想要的......
谢谢!
答案 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方面非常棒。