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

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日

相关文章

  • 如何将Pandas数据框架追加到现有的CSV文件?

    将Pandas数据框追加到现有的CSV文件,其实就是将数据框的行添加到CSV文件的末尾。 以下是如何实现这一操作的完整攻略: 读取现有CSV文件 使用Pandas的read_csv函数读取现有CSV文件,并将其存储在一个数据框中。 创建要追加的数据框 创建要添加到CSV文件中的数据框,确保其具有与现有CSV文件相同的列名称和数据类型。 使用Pandas的to…

    python-answer 2023年3月27日
    00
  • pandas基础 Series与Dataframe与numpy对二进制文件输入输出

    pandas基础 什么是pandas? pandas是一个开源的python数据分析库,它提供了快速、灵活和富于表现力的数据结构来操作结构化数据。pandas被广泛用于数据处理、数据清洗、数据分析和数据可视化等领域。 pandas中的主要数据结构 pandas中的主要数据结构有两种:Series和DataFrame。 Series Series是一种一维的数…

    python 2023年5月14日
    00
  • 在Python中操纵时间序列数据

    在Python中操作时间序列数据,主要使用的是datetime模块。下面是完整的攻略: 1. 导入模块 from datetime import datetime 2. 创建日期时间对象 使用 datetime 构造函数,可以创建一个日期时间对象。该构造函数最少需要三个参数: year(年) month(月) day(日) dt = datetime(202…

    python-answer 2023年3月27日
    00
  • 如何修复:Pandas中的KeyError

    当在 Pandas 中访问 DataFrame 或 Series 中不存在的键时,会抛出 KeyError 异常。在这种情况下,应该检查代码中使用的键名和 DataFrame 或 Series 中实际存在的键名是否匹配。 以下是修复 KeyError 的一些步骤: 1.检查DataFrame或Series中是否存在该键名 首先应该检查 DataFrame 或…

    python-answer 2023年3月27日
    00
  • python的pip安装以及使用教程

    下面是Python的pip安装及使用教程的完整攻略。 安装pip pip是Python的官方软件包管理工具,它为开发者提供了一个方便易用的软件包管理工具。因此,在使用Python包时,我们通常需要用到pip。 pip与Python版本配合使用,不同Python版本使用pip的方式也有所不同。在Python 2.7.x中,pip已被集成安装,无需再安装。而在P…

    python 2023年5月14日
    00
  • 在Pandas数据框架中,将列的第一个字母大写

    在Pandas数据框架中,将列的第一个字母大写,可以通过以下步骤实现: 导入 Pandas 模块: pythonimport pandas as pd 创建包含数据的数据框 DataFrame: “`pythondata = {‘name’: [‘tom’, ‘jack’, ‘steve’, ‘ricky’], ‘age’: [28, 34, 29, 42…

    python-answer 2023年3月27日
    00
  • 利用Python计算KS的实例详解

    让我们来详细讲解一下“利用Python计算KS的实例详解”。 简介 Kolmogorov-Smirnov检验(KS Test)是一种用于检验样本是否来自某个分布的非参数统计方法。在Python中,我们可以利用Scipy库中的ks_2samp函数快速地进行KS检验。 前置知识 在学习本文之前,需要掌握Python的基础语法和Scipy库的使用方法。 实例详解 …

    python 2023年5月14日
    00
  • 将Pandas数据框架导出到CSV文件中

    将Pandas数据框架导出为CSV文件是数据处理中非常常见的操作。下面给出完整的攻略: 1. 确认导出路径 在进行导出操作之前,需要确认导出的文件路径和文件名。可以使用Python内置的os包来创建并确认目录是否存在,如果不存在则会自动创建。 import os if not os.path.isdir(‘/path/to/export’): os.make…

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