Pandas-时间(二)-数据类型:DatetimeIndex(其中每个元素的类型为:Timestamp)【创建方式:①pd.DatetimeIndex([]);②pd.to_datetime()】

一、pd.DatetimeIndex():直接创建

import pandas as pd
from datetime import datetime

# pd.DatetimeIndex()

# 直接生成时间戳索引,支持str、datetime.datetime
rng1 = pd.DatetimeIndex(['12/1/2017', '12/2/2017', '12/3/2017'])
print("rng1 = {0}, type(rng1) = {1}".format(rng1, type(rng1)))
print("-" * 50)
print("rng1[0] = {0}, type(rng1[0]) = {1}".format(rng1[0], type(rng1[0])))
print("-" * 200)

rng2 = pd.DatetimeIndex(['12/1/2017'])
print("rng2 = {0}, type(rng2) = {1}".format(rng2, type(rng2)))
print("-" * 50)
print("rng2[0] = {0}, type(rng2[0]) = {1}".format(rng2[0], type(rng2[0])))
print("-" * 200)

rng3 = pd.DatetimeIndex([datetime(2015, 6, 1), datetime(2015, 7, 1), datetime(2015, 8, 1)])
print("rng3 = {0}, type(rng3) = {1}".format(rng3, type(rng3)))
print("-" * 50)
print("rng3[0] = {0}, type(rng3[0]) = {1}".format(rng3[0], type(rng3[0])))

打印结果:

rng1 = DatetimeIndex(['2017-12-01', '2017-12-02', '2017-12-03'], dtype='datetime64[ns]', freq=None), type(rng1) = <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
--------------------------------------------------
rng1[0] = 2017-12-01 00:00:00, type(rng1[0]) = <class 'pandas._libs.tslibs.timestamps.Timestamp'>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
rng2 = DatetimeIndex(['2017-12-01'], dtype='datetime64[ns]', freq=None), type(rng2) = <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
--------------------------------------------------
rng2[0] = 2017-12-01 00:00:00, type(rng2[0]) = <class 'pandas._libs.tslibs.timestamps.Timestamp'>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
rng3 = DatetimeIndex(['2015-06-01', '2015-07-01', '2015-08-01'], dtype='datetime64[ns]', freq=None), type(rng3) = <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
--------------------------------------------------
rng3[0] = 2015-06-01 00:00:00, type(rng3[0]) = <class 'pandas._libs.tslibs.timestamps.Timestamp'>

Process finished with exit code 0

二、pd.to_datetime([]):生成时间戳序列

pd.to_datetime():

  • 如果是单个时间数据,转换成pandas的时刻数据,数据类型为Timestamp
  • 多个时间数据,将会转换为pandas的DatetimeIndex数据类型

1、生成时间戳序列

pd.to_datetime():如果输入的是多个时间数据,将会转换为pandas的DatetimeIndex,DatetimeIndex列表的每一个元素的类型就是Timestamp类型。

from datetime import datetime
import pandas as pd

# 多个时间数据,将会转换为pandas的DatetimeIndex
date1 = [datetime(2015, 6, 1), datetime(2015, 7, 1), datetime(2015, 8, 1)]
date2 = ['2017-2-1', '2017-2-2', '2017-2-3']
print("date1 = {0}, type(date1) = {1}".format(date1, type(date1)))
print("date2 = {0}, type(date2) = {1}".format(date2, type(date2)))
print('-' * 100)

t1 = pd.to_datetime(date1)
t2 = pd.to_datetime(date2)

print("t1 = {0}----type(t1) = {1}".format(t1, type(t1)))
print("t1[0] = {0}----type(t1[0]) = {1}".format(t1[0], type(t1[0])))
print('-' * 50)
print("t2 = {0}----type(t2) = {1}".format(t2, type(t2)))
print("t2[0] = {0}----type(t2[0]) = {1}".format(t2[0], type(t2[0])))
print('-' * 100)

打印结果:

date1 = [datetime.datetime(2015, 6, 1, 0, 0), datetime.datetime(2015, 7, 1, 0, 0), datetime.datetime(2015, 8, 1, 0, 0)], type(date1) = <class 'list'>
date2 = ['2017-2-1', '2017-2-2', '2017-2-3'], type(date2) = <class 'list'>
----------------------------------------------------------------------------------------------------
t1 = DatetimeIndex(['2015-06-01', '2015-07-01', '2015-08-01'], dtype='datetime64[ns]', freq=None)----type(t1) = <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
t1[0] = 2015-06-01 00:00:00----type(t1[0]) = <class 'pandas._libs.tslibs.timestamps.Timestamp'>
--------------------------------------------------
t2 = DatetimeIndex(['2017-02-01', '2017-02-02', '2017-02-03'], dtype='datetime64[ns]', freq=None)----type(t2) = <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
t2[0] = 2017-02-01 00:00:00----type(t2[0]) = <class 'pandas._libs.tslibs.timestamps.Timestamp'>
----------------------------------------------------------------------------------------------------

Process finished with exit code 0

2、时间戳序列中夹杂其他格式数据

当一组时间序列中夹杂其他格式数据,可用errors参数返回

  • errors = ‘ignore’:不可解析时返回原始输入,这里就是直接生成一般数组
  • errors = ‘coerce’:不可扩展,缺失值返回NaT(Not a Time),结果仍为DatetimeIndex
import pandas as pd

# 当一组时间序列中夹杂其他格式数据,可用errors参数返回
date3 = ['2017-2-1', '2017-2-2', '2017-2-3', 'hello world!', '2017-2-5', '2017-2-6']
# errors = 'ignore':不可解析时返回原始输入,这里就是直接生成一般数组
t3 = pd.to_datetime(date3, errors='ignore')
# errors = 'coerce':不可扩展,缺失值返回NaT(Not a Time),结果认为DatetimeIndex
t4 = pd.to_datetime(date3, errors='coerce')
print("t3 = {0} \ntype(t3) = {1}".format(t3, type(t3)))
print('-' * 50)
print("t4 = {0} \ntype(t4) = {1}".format(t4, type(t4)))
print('-' * 100)

打印结果:

t3 = ['2017-2-1' '2017-2-2' '2017-2-3' 'hello world!' '2017-2-5' '2017-2-6'] 
type(t3) = <class 'numpy.ndarray'>
--------------------------------------------------
t4 = DatetimeIndex(['2017-02-01', '2017-02-02', '2017-02-03', 'NaT', '2017-02-05', '2017-02-06'], dtype='datetime64[ns]', freq=None) 
type(t4) = <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
----------------------------------------------------------------------------------------------------

Process finished with exit code 0
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值