pandas和python中不同类型的日期类型

pandas和python中不同类型的日期类型,python,python-3.x,pandas,datetime,Python,Python 3.x,Pandas,Datetime,我正在构建一个交易策略回溯测试,该测试与将日期存储为索引有关。有人能解释一下日期的下列数据类型的差异(以及赋值时的可变性)吗 a=pd.date_range('1/1/2016',periods=10,freq='w') b=datetime.datetime(2016,1,4) c=pd.datetime(2016,1,4) d=pd.Timestamp(153543453435) 打印时,数据类型如下: <class 'pandas.core.indexes.datetimes.Da

我正在构建一个交易策略回溯测试,该测试与将日期存储为索引有关。有人能解释一下日期的下列数据类型的差异(以及赋值时的可变性)吗

a=pd.date_range('1/1/2016',periods=10,freq='w')
b=datetime.datetime(2016,1,4)
c=pd.datetime(2016,1,4)
d=pd.Timestamp(153543453435)
打印时,数据类型如下:

<class 'pandas.core.indexes.datetimes.DatetimeIndex'> (print(type(a))
<class 'pandas._libs.tslib.Timestamp'> (print(type(a[0]))
<class 'datetime.datetime'>
<class 'datetime.datetime'>
<class 'pandas._libs.tslib.Timestamp'>
(打印(类型(a))
(打印(类型(a[0]))
如果有人能详细解释它们之间的区别,以及变量赋值时的可变性,那就太好了

dti = pd.date_range('1/1/2016',periods=10,freq='w')
根据
DatetimeIndex
is:

不可变的datetime64数据数组,内部表示为int64,可以装箱到作为datetime子类的Timestamp对象,并携带元数据,如频率信息

此外,pandas
Timestamp
对象设计为不可变:

ts  # returns Timestamp('2016-01-03 00:00:00', freq='W-SUN')
ts.replace(year=2015)  # returns Timestamp('2015-01-03 00:00:00', freq='W-SUN')
ts  # returns Timestamp('2016-01-03 00:00:00', freq='W-SUN')
请注意原始
时间戳
对象的年份如何没有改变。相反,replace方法返回了一个新的
时间戳
对象

最后,关于本机python
datetime
对象,根据:

这些类型的对象是不可变的

下面是一个关于在表示日期时间的不同类型之间转换的示例

那你为什么要用一个来代替另一个呢

datetimes
是一个很难处理的问题。这就是熊猫创建自己的包装类(
Timestamp
)的原因.元数据存储在这些对象上,使其操作更容易。
DatetimeIndex
只是一系列对象,这些对象被装箱到
Timestamp
对象中,用于添加功能。例如,使用
Timestamp
/
DatetimeIndex
可以:

  • 向datetimeindex添加一定数量的工作日
  • 创建跨越特定周数的序列
  • 改变时区
  • 等等
如果没有
Timestamp
DatetimeIndex
类中存储的额外方法和元数据,所有这些都将是一件非常痛苦的事情

更多示例请参见

根据
DatetimeIndex
is:

不可变的datetime64数据数组,内部表示为int64,可以装箱到作为datetime子类的Timestamp对象,并携带元数据,如频率信息

此外,pandas
Timestamp
对象设计为不可变:

ts  # returns Timestamp('2016-01-03 00:00:00', freq='W-SUN')
ts.replace(year=2015)  # returns Timestamp('2015-01-03 00:00:00', freq='W-SUN')
ts  # returns Timestamp('2016-01-03 00:00:00', freq='W-SUN')
请注意原始
时间戳
对象的年份如何没有改变。相反,replace方法返回了一个新的
时间戳
对象

最后,关于本机python
datetime
对象,根据:

这些类型的对象是不可变的

下面是一个关于在表示日期时间的不同类型之间转换的示例

那你为什么要用一个来代替另一个呢

datetimes
是一个很难处理的问题。这就是熊猫创建自己的包装类(
Timestamp
)的原因.元数据存储在这些对象上,使其操作更容易。
DatetimeIndex
只是一系列对象,这些对象被装箱到
Timestamp
对象中,用于添加功能。例如,使用
Timestamp
/
DatetimeIndex
可以:

  • 向datetimeindex添加一定数量的工作日
  • 创建跨越特定周数的序列
  • 改变时区
  • 等等
如果没有
Timestamp
DatetimeIndex
类中存储的额外方法和元数据,所有这些都将是一件非常痛苦的事情


查看更多示例。

我不熟悉可以装箱到的术语
-知道这意味着什么吗?@wwii java经常使用装箱拆箱…请参阅:我不熟悉可以装箱到
的术语
-知道这意味着什么吗?@wwii java经常使用装箱拆箱…请参阅: