Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么熊猫在调用pd.to_datetime()时返回时间戳而不是datetime对象?_Python_Datetime_Pandas_Timestamp - Fatal编程技术网

Python 为什么熊猫在调用pd.to_datetime()时返回时间戳而不是datetime对象?

Python 为什么熊猫在调用pd.to_datetime()时返回时间戳而不是datetime对象?,python,datetime,pandas,timestamp,Python,Datetime,Pandas,Timestamp,根据pd.to_datetime()应该创建一个datetime对象 In [1]: pd.to_datetime("2012-05-14") Out[1]: Timestamp('2012-05-14 00:00:00', tz=None) In [2]: t = pd.to_datetime("2012-05-14") In [3]: t.to_datime() Out[2]: datetime.datetime(2012, 5, 14, 0, 0) 相反,当我调用pd.to_datet

根据pd.to_datetime()应该创建一个datetime对象

In [1]: pd.to_datetime("2012-05-14")
Out[1]: Timestamp('2012-05-14 00:00:00', tz=None)

In [2]: t = pd.to_datetime("2012-05-14")
In [3]: t.to_datime()
Out[2]: datetime.datetime(2012, 5, 14, 0, 0)
相反,当我调用pd.to_datetime(“2012-05-14”)时,我得到了一个timestamp对象!在该对象上调用
到\u datetime()
,最终得到一个datetime对象

In [1]: pd.to_datetime("2012-05-14")
Out[1]: Timestamp('2012-05-14 00:00:00', tz=None)

In [2]: t = pd.to_datetime("2012-05-14")
In [3]: t.to_datime()
Out[2]: datetime.datetime(2012, 5, 14, 0, 0)

这种意外行为有何解释?

时间戳对象是pandas处理datetimes的方式,因此它是pandas中的datetime对象。但是您需要一个
datetime.datetime
对象。
通常情况下,您不应该关心这一点(这只是一个不同报告的问题)。只要你和熊猫一起工作,时间戳就可以了。即使您真的想要一个
datetime.datetime
,大多数事情都会成功(例如所有方法),否则您可以使用
来检索
datetime.datetime
对象

长话短说:

  • pandas将日期时间存储为索引/列中类型为
    datetime64
    的数据(这不是
    datetime.datetime
    对象)。这是datetime的标准numpy类型,比使用
    datetime性能更好。datetime
    对象:

     In [15]: df = pd.DataFrame({'A':[dt.datetime(2012,1,1), dt.datetime(2012,1,2)]})
    
     In [16]: df.dtypes
     Out[16]:
     A    datetime64[ns]
     dtype: object
    
     In [17]: df.loc[0,'A']
     Out[17]: Timestamp('2012-01-01 00:00:00', tz=None)
    
  • 当检索这样一个datetime列/索引的一个值时,您将看到一个
    Timestamp
    对象。这是一个使用datetimes更方便的对象(比datetime64有更多的方法、更好的表示等),它是
    datetime.datetime
    的一个子类,它的所有方法也是如此