pandas的to_datetime时间转换使用及学习心得

yizhihongxing

Pandasto_datetime() 时间转换使用及学习心得

Pandas 是 Python 下一个非常常用的数据处理库,to_datetime() 方法是 Pandas 中处理日期时间数据的重要方法之一。它可以将字符串、时间戳等格式的时间数据转换为 Pandas 中的日期时间格式,并且支持多种 datetime 格式的识别,极大地增强了 Pandas 的灵活性。本文将详细介绍 to_datetime() 的各种用法和注意事项。

使用方法

基础使用

首先,需要将 Pandas 库导入:

import pandas as pd

然后就可以使用 pd.to_datetime() 方法将传入的数据转换为 Pandas 中的日期时间格式了。例如:

date_list = ['2021-09-01', '2021-09-02', '2021-09-03']
date_list_dt = pd.to_datetime(date_list)
print(date_list_dt)

输出为:

DatetimeIndex(['2021-09-01', '2021-09-02', '2021-09-03'], dtype='datetime64[ns]', freq=None)

pd.to_datetime() 方法的默认格式是 %Y-%m-%d,该方法会将传入的字符串转换为 Pandas 中的 Timestamp 格式。当传入一个列表时,该方法会将列表中的每一个元素都转换为 Timestamp 类型,并返回一个 DatetimeIndex 类型的 Pandas 对象。

复杂格式转换

pd.to_datetime() 还支持多种时间格式的转换。例如,对于以下字符串时间格式:

datetime_list = ['7/6/2022 10:25', '09-08-2022 12:30', '2022-07-04 16:45:35']

我们可以使用 pd.to_datetime() 方法将其转换为 Pandas 中的日期时间格式,方法如下:

datetime_list_dt = pd.to_datetime(datetime_list, format='%m/%d/%Y %H:%M', exact=False)
print(datetime_list_dt)

输出为:

DatetimeIndex(['2022-07-06 10:25:00', '2022-09-08 12:30:00',
               '2022-07-04 16:45:35'],
              dtype='datetime64[ns]', freq=None)

在上述例子中,我们加入了一个 format 参数。该参数用来指定输入的字符串时间格式,同时也支持多种时间格式的解析。例如,%m/%d/%Y %H:%M 分别对应了月份、日期、年份、小时和分钟。参数 exact 代表是否强制按照 format 指定的格式进行解析,如果不强制则会自动匹配类似的时间格式。

至此,我们已经学会了 Pandas 中 pd.to_datetime() 方法的基础使用和一个复杂的转换示例。

注意事项

超出时间范围的处理

Timestamp 类型表示的时间范围是有限的。具体来说,它的范围为 1677 年到 2262 年。在转换不在该范围的时间时会抛出 OutOfBoundsDatetime 异常,例如:

out_of_range_date = '2262-01-01 00:00:01'
out_of_range_date_dt = pd.to_datetime(out_of_range_date)

输出为:

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2262-01-01 00:00:01

多种日期时间格式的转换

pd.to_datetime() 方法支持多种日期时间格式的识别和转换,但这也意味着在传入非标准格式的日期时间字符串时可能会出现转换错误的问题。例如:

date_strings = ['2021-09-01 12:00:00', '2021-09-02']
wrong_format_date_strings = ['2021-09-01', '2021.09.02']
date_strings.extend(wrong_format_date_strings)
date_strings_dt = pd.to_datetime(date_strings)
print(date_strings_dt)

输出为:

DatetimeIndex(['2021-09-01 12:00:00', '2021-09-02 00:00:00',
                '2021-09-01 00:00:00', '2021-09-02 00:00:00'],
               dtype='datetime64[ns]', freq=None)

在上述例子中,我们故意将一些日期时间字符串传入错误的日期时间格式。由于 pd.to_datetime() 方法可以处理多种日期时间格式,它会尝试将这些错误的格式识别为日期时间格式,但结果并不是我们想要的。

因此,在使用 pd.to_datetime() 方法时,一定要清楚所要转换的日期时间格式,并传入正确的格式参数。

示例展示

示例1:处理多种日期时间格式的数据

一个常见的需求就是需要处理多种日期时间格式的数据。例如,我们有一个记录了销售日期和时间的数据集:

sales_data = pd.DataFrame({
    'Timestamp': ['2022/06/06 12:00:00', '9/8/2022 8:05', '2022-05-03 13:10:05'],
    'Price': [10.5, 5, 8.9]
})

其中,缺少了对应的时间格式。我们可以使用 pd.to_datetime() 方法将时间字符串转化为标准的时间戳格式:

sales_data['Timestamp'] = pd.to_datetime(sales_data['Timestamp'], format='%Y/%m/%d %H:%M:%S', exact=False, errors='coerce')

解释:

  • format='%Y/%m/%d %H:%M:%S' 表示将时间字符串格式化为标准的时间戳格式;
  • exact=False 表示在多种时间格式中动态匹配;
  • errors='coerce' 表示将无法转换的值设置为空值。

结果如下:

            Timestamp  Price
0 2022-06-06 12:00:00   10.5
1 2022-09-08 08:05:00    5.0
2 2022-05-03 13:10:05    8.9

示例2:从 csv 文件中读取日期时间格式的数据

在从数据文件中读取数据时,经常需要将时间戳转换为 Pandas 中的日期时间格式。例如,我们有一个 csv 文件,包含了用户的注册时间,格式如下:

user_id,register_time
1,2021-09-01 10:00:00
2,2021-09-02 13:01:23
3,2021-09-03 21:00:03

我们可以使用 Pandas 的 read_csv() 方法读取该 csv 文件,并且将 register_time 中的时间戳转换为 Pandas 中的日期时间格式。代码如下:

user_data = pd.read_csv('user_data.csv')
user_data['register_time'] = pd.to_datetime(user_data['register_time'], format='%Y-%m-%d %H:%M:%S')
print(user_data)

输出为:

   user_id       register_time
0        1 2021-09-01 10:00:00
1        2 2021-09-02 13:01:23
2        3 2021-09-03 21:00:03

总结

pd.to_datetime() 方法是 Pandas 处理日期时间数据的重要工具之一,适用于各种类型的日期时间格式转换。我们可以根据实际需求来设置转换格式和异常处理方式,使其更加贴合实际应用场景。同时,在使用该方法时要注意传入日期时间字符串的格式是否正确,避免转换错误。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas的to_datetime时间转换使用及学习心得 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python2与python3中关于对NaN类型数据的判断和转换方法

    关于对NaN类型数据的判断和转换方法,Python2和Python3略有不同。在下面的文本中,我们将详细讲解这两种语言中针对NaN数据的操作方法。 Python2中NaN的判断和转换 Python2中没有专门的NaN类型,一般使用float类型表示NaN,即float(‘nan’)。判断一个数据是否为NaN,可以使用math.isnan()函数,示例如下: …

    python 2023年5月14日
    00
  • pandas.cut具体使用总结

    当我们需要将连续型数据离散化为一定数量的区间时,pandas提供了cut函数来实现这一过程。本文将介绍pandas.cut函数的具体使用,包括以下几个方面: cut函数的基本语法 通过cut函数实现数据分箱 通过cut函数实现数据分组 cut函数参数详解 实例分析 1. cut函数的基本语法 pandas.cut函数的基本语法如下: pandas.cut(x…

    python 2023年5月14日
    00
  • 对pandas里的loc并列条件索引的实例讲解

    接下来我将为您详细讲解“对pandas里的loc并列条件索引的实例讲解”的完整攻略。 1. loc索引简介 loc是Pandas DataFrame一种基于标签的索引方式,表示通过标签选取数据,其格式为df.loc[row_indexer,column_indexer]。 其中,row_indexer为行索引,可省略。column_indexer为列索引,也…

    python 2023年5月14日
    00
  • 删除pandas中产生Unnamed:0列的操作

    Sure,删除pandas中生成的Unnamed: 0列的操作比较简单,可以按照以下步骤操作: 1. 加载数据并检查是否有Unnamed: 0列 首先,使用pandas中的read_csv方法或其它读取数据的方法加载数据。然后,检查数据集是否存在Unnamed: 0列。可以使用.columns查看数据集中所有列的名称。示例代码如下: import panda…

    python 2023年5月14日
    00
  • pandas中的数据去重处理的实现方法

    下面就为您详细讲解一下pandas中的数据去重处理的实现方法: 一、pandas中的数据去重方法 pandas中的数据去重方法主要有两个函数来实现,分别是drop_duplicates()和duplicated()。接下来我们将一一介绍这两个函数的使用方法。 1.1 duplicated() duplicated()函数可以帮助我们查看DataFrame或S…

    python 2023年5月14日
    00
  • MySQL 8.0 之索引跳跃扫描(Index Skip Scan)

    MySQL 8.0 之索引跳跃扫描(Index Skip Scan)是一种优化查询效率的技术,在某些索引查询场景下能够显著提高查询效率。下面就来详细讲解一下这种技术的完整攻略。 什么是索引跳跃扫描 索引跳跃扫描技术是在使用多列索引查询时,通过跳过一部分索引列而直接进入上下文扫描阶段,以减少扫描的数据行数,从而提高查询效率的一种优化手段。具体来说,就是通过构建…

    python 2023年6月13日
    00
  • pandas实现按照多列排序-ascending

    要实现按照多列排序,可以使用pandas的sort_values函数。sort_values函数可以灵活地按照指定列排序,并且可以逆序排序。 sort_values函数的语法格式为: dataframe.sort_values(by, axis=0, ascending=True, inplace=False) 参数说明: by:要排序的列名或者列名的列表 …

    python 2023年5月14日
    00
  • Pandas – 两个日期之间的月数

    你好!要计算两个日期之间的月数,可以使用Pandas库中的DateOffset对象和date_range函数。具体步骤如下: 首先,先从Pandas库中引入需要的模块: import pandas as pd from pandas.tseries.offsets import DateOffset 接着,通过pd.to_datetime函数将字符串日期转换…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部