Python 在pandas中混淆datetime对象

Python 在pandas中混淆datetime对象,python,datetime,numpy,pandas,Python,Datetime,Numpy,Pandas,我对熊猫处理时间相关对象的方式感到困惑 如果我这样做 x = pd.datetime.fromtimestamp(1440502703064/1000.) # or x = pd.datetime(1234,5,6) 然后type(x)在这两种情况下返回datetime.datetime。但是,如果我有: z = pd.DataFrame([ {'a': 'foo', 'ts': pd.datetime.fromtimestamp(1440502703064/1000.)} ]

我对熊猫处理时间相关对象的方式感到困惑

如果我这样做

x = pd.datetime.fromtimestamp(1440502703064/1000.) # or
x = pd.datetime(1234,5,6)
然后
type(x)
在这两种情况下返回
datetime.datetime
。但是,如果我有:

z = pd.DataFrame([
    {'a': 'foo', 'ts': pd.datetime.fromtimestamp(1440502703064/1000.)}
    ])

然后
type(z['ts'][0])
返回
pandas.tslib.Timestamp
。这部戏什么时候开始?它的触发器是
pandas
还是
numpy
?在后一种情况下,我得到的是什么类型的数据?它记录在哪里?

我不是100%确定,因为我没有研究底层代码,但是从
datetime.datetime的转换发生在值“合并”到
数据帧的那一刻

DataFrame
之外,pandas将尝试做一些聪明的事情,并在使用
pd.dattime(.fromtimestamp)
时返回一些合理的东西:它返回一个Python
datetime.datetime
对象

在内部,它使用了一些可能在内部工作得更好的东西。您可以在使用
datetime.datetime
对象创建
DataFrame
时看到转换:

>>> from datetime import datetime
>>> z = pd.DataFrame([
       {'a': 'foo', 'ts': datetime(2015,8,27)} ])
>>> type(z['ts'][0])
pandas.tslib.Timestamp
也许更清楚:

>>> pd.datetime == datetime
True
因此,转换发生在
数据帧
初始化期间

至于文档,我四处搜索,找到了(注意:可能不是一个非常安全的链接),上面写着(docstring):

时间戳相当于python的Datetime,是 在大多数情况下可以与之互换。这是一种用于 组成DatetimeIndex的项,以及其他面向时间序列的项 熊猫的数据结构


听起来不错。因此,
TimeStamp
是一种内部未记录的对象。太好了:(阅读大量的文档会有帮助:和