Pandas python dataframe 时间格式转换

Pandas python dataframe 时间格式转换

在本文中,我们将介绍如何使用Pandas处理不同格式的日期时间数据,特别是在将多个不同格式的日期和时间列合并为一个单独的datetime格式列时。

阅读更多:Pandas 教程

背景和问题

在数据分析和预处理中,日期和时间数据是非常常见的。但是,在现实生活中,时间是以多种形式表达的。例如,常见的时间格式有以下几种:

  • ‘%m/%d/%Y’:月/日/年(例如: ’08/17/2021’)
  • ‘%Y-%m-%d’:年-月-日(例如:’2021-08-17’)
  • ‘%m/%d/%Y %H:%M:%S’:月/日/年 时:分:秒(例如:’08/17/2021 15:45:30’)
  • ‘%Y-%m-%d %H:%M:%S’:年-月-日 时:分:秒(例如:’2021-08-17 15:45:30’)

因此,在处理数据时,可能会遇到如下问题:

  • 数据集中有多个不同格式的时间列;
  • 时间列的格式不是完全相同的。

那么,如何在Pandas中处理这些列呢?

解决方案

加载数据

首先,我们需要准备一个示例,包含两个不同格式的日期时间数据列。我们将使用一个包含订单日期和交付日期的数据集。让我们来看看这个数据集。

import pandas as pd
orders = pd.DataFrame({
    'order_date': ['02/12/2021', '2020-05-27', '06/30/2021', '2019/04/23'],
    'delivery_date': ['2021-02-13', '2020-06-02 10:30:00', '07/03/2021 15:42:27', '2019-04-26 11:24:35']
})

上述代码将创建一个具有两列的数据帧。这些列包含日期时间数据,其中一列以’%m/%d/%Y’格式,另一列以’%Y-%m-%d %H:%M:%S’格式表示。

转换日期时间格式

使用 Pandas,可以轻松地将不同格式的日期时间数据转换为 ‘datetime’ 格式。我们只需要使用 ‘to_datetime()’ 函数,并将标签指定为它们的所需日期时间格式。

如下所示:

orders['order_date'] = pd.to_datetime(orders['order_date'], format='%m/%d/%Y')
orders['delivery_date'] = pd.to_datetime(orders['delivery_date'], format='%Y-%m-%d %H:%M:%S')

第一行代码将 ‘order_date’列转换为’%m/%d/%Y’日期时间格式,第二行将’delivery_date’列转换为’%Y-%m-%d %H:%M:%S’格式。此时,这两列的数据类型已经由 ‘object’ 转换为 ‘datetime64’。

合并日期和时间列

现在,我们已经根据指定格式,将两列转换为日期时间格式。接下来,我们将考虑如何将两列合并成一个单独的datetime列。

在这里,我们可以使用 Pandas 的 ‘combine()’ 函数。该函数用于将两个日期和时间对象组合成一个 datetime 对象。它可以灵活地处理日期和时间格式。

例如,我们可以使用以下代码来将日期和时间列合并到一个列中:

orders['delivery_datetime'] = pd.to_datetime(orders['delivery_date'].dt.date.astype(str) + ' ' + orders['delivery_date'].dt.time.astype(str))

在上面的代码中,我们首先使用 ‘dt.date’ 属性提取日期部分,再使用 ‘ dt.time’属性提取时间部分。然后将时间和日期合并起来,形成一个新的datetime对象,并将其存储到一个新的列’delivery_datetime’中。

更改列的名称和删除不需要的列

最后,我们可以删除原始的日期和时间列,只保留新的datetime列。

orders.drop(['order_date', 'delivery_date'], axis=1, inplace=True)

这样,我们就完成了多个日期时间列的转换和合并。现在,我们已经将两个不同的日期时间列转换成了一个新的datetime格式列。

总结

在本文中,我们介绍了如何使用Pandas处理多个日期时间列,特别是在将多个不同格式的日期和时间列合并为一个单独的datetime格式列时。我们使用了Pandas的 ‘to_datetime()’函数和’ combine()’函数,将不同格式的日期和时间转换为datetime格式,然后将它们合并成一个日期和时间列。

此外,我们还学习了如何删除不需要的列,只保留新的列。

希望这篇文章能够帮助你更好地处理和分析日期时间数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程