【问题标题】:Pandas DataFrame DateTimes vs TimestampsPandas DataFrame DateTimes vs Timestamps
【发布时间】:2021-11-04 05:17:34
【问题描述】:

我有一个带有单个 day 列的 DataFrame:

|     | day                       |
|----:|:--------------------------|
|   0 | 2021-08-28 00:00:00+00:00 |
|   1 | 2021-08-28 02:00:00+00:00 |
|   2 | 2021-08-28 04:00:00+00:00 |
| ... |                       ... |
|   n | 2021-08-28 16:00:00+00:00 |

>>> df.dtypes
day    datetime64[ns, UTC]
dtype: object

我注意到 pandas 在采样和索引时返回不同的日期数据类型,并且必须进行转换才能进行比较。

索引查询

>>> df.day[0]
Timestamp('2021-08-28 00:00:00+0000', tz='UTC')

>>> type(df.day[0])
pandas._libs.tslibs.timestamps.Timestamp

示例查询

>>> df.day.sample(1).values[0]
numpy.datetime64('2021-09-04T12:00:00.000000000')

>>> type(df.day.sample(1).values[0])
numpy.datetime64

发生了什么事?为什么 pandas 在两种场景中使用不同的数据类型?

  • Python:3.8.10
  • 熊猫:1.2.5

【问题讨论】:

  • 正如您在官方文档中看到的,值将返回 numpy 风格的所有内容 :) __ 返回 DataFrame 的 Numpy 表示。 __

标签: python pandas dataframe datetime types


【解决方案1】:

Pandas 将日期时间存储为 numpy 的底层 datetime64 类型。原因(而不是存储为Timestamp,它是datetime.datetime 子类)很简单——性能。但是,在检索特定值时,它会返回一个 Timestamp 对象,因为它支持所有 datetime.datetime 方法,所以使用起来更方便。

【讨论】:

    猜你喜欢
    • 2018-03-01
    • 1970-01-01
    • 2021-03-22
    • 2019-09-01
    • 2016-08-05
    • 2019-11-10
    • 2017-11-11
    • 2019-07-08
    • 2015-06-03
    相关资源
    最近更新 更多