Pandas 将DataFrame列从字符串转换为日期时间类型

Pandas 将DataFrame列从字符串转换为日期时间类型

在现实世界中,数据很少是直接可用的。通常你需要对数据进行处理和转换,还要将数据类型转换为正确的格式。其中一种常见的转换是将一个字符串列转换为日期时间类型,以便分析和可视化数据。

在本文中,我们将介绍如何使用Pandas将DataFrame列从字符串转换为日期时间类型。

阅读更多:Pandas 教程

准备工作

在开始之前,你需要安装Python和Pandas库。如果没有安装,可以参考以下步骤进行安装。

pip install pandas
Python

示例数据

假设我们有一个包含日期时间的DataFrame,但是该列的数据类型是字符串。我们需要将该列转换为日期时间类型以便进一步处理和分析数据。

import pandas as pd

data = {'date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
        'value':[10, 20, 30,40, 50]}
df = pd.DataFrame(data)
print(df)
Python

输出结果如下:

         date  value
0  2021-01-01     10
1  2021-01-02     20
2  2021-01-03     30
3  2021-01-04     40
4  2021-01-05     50
Python

在这个DataFrame中,date列是一个字符串类型,我们需要将其转换为日期时间类型。

使用Pandas将字符串列转换为日期时间类型

使用Pandas将字符串列转换为日期时间类型非常简单。只需要使用 pandas.to_datetime() 函数,并指定列名即可。

df['date'] = pd.to_datetime(df['date'])
print(df)
Python

输出结果如下:

        date  value
0 2021-01-01     10
1 2021-01-02     20
2 2021-01-03     30
3 2021-01-04     40
4 2021-01-05     50
Python

现在我们已经成功地将date列转换为日期时间类型了!

将多个字符串列转换为日期时间类型

有时候,我们可能需要将一个DataFrame中的多个列转换为日期时间类型。还是使用上面的示例数据,假设现在我们有一个新增的时间列,也需要将其转换为日期时间类型。

data = {'date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
        'time':['00:00:00', '01:00:00', '02:00:00', '03:00:00', '04:00:00'],
        'value':[10, 20, 30, 40, 50]}
df = pd.DataFrame(data)
print(df)
Python

输出结果如下:

         date      time  value
0  2021-01-01  00:00:00     10
1  2021-01-02  01:00:00     20
2  2021-01-03  02:00:00     30
3  2021-01-04  03:00:00     40
4  2021-01-05  04:00:00     50
Python

现在需要将date和time列都转换为日期时间类型。这次我们需要使用Pandas的 pd.to_datetime() 函数,并将date列和time列组合起来。可以使用 + 运算符将两列组合在一起。

df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])
df = df.drop(['date', 'time'], axis=1) #删除date和time列
print(df)
Python

输出结果如下:

   value            datetime
0     10 2021-01-01 00:00:001     20 2021-01-02 01:00:00
2     30 2021-01-03 02:00:00
3     40 2021-01-04 03:00:00
4     50 2021-01-05 04:00:00
Python

现在,我们已成功将date和time列转换为datetime类型,并用新的datetime列代替了原有的date和time列。

处理日期时间格式

一旦我们将一个字符串列转换为日期时间类型,我们就可以使用所有日期时间类型的函数和方法进行操作,例如获取日期、时间或日期时间的差异,提取出年、月、日、时间等,甚至是将日期时间转换为其他格式。下面是一些示例。

获取日期时间的差异

我们可以使用Pandas的 datetime 模块来获取两个日期时间之间的时间差异。

import datetime

datetime1 = datetime.datetime(2021, 8, 1, 0, 0, 0)
datetime2 = datetime.datetime(2021, 8, 2, 12, 30, 0)

diff = datetime2 - datetime1

print('时间差异为:', diff)
print('小时差异为:', diff.total_seconds()/3600)
Python

输出结果如下:

时间差异为: 1 day, 12:30:00
小时差异为: 36.5
Python

这里我们使用了 datetime.datetime() 函数来创建两个日期时间对象,并将它们相减得到时间差异。使用 total_seconds() 方法可以将时间差转换为秒,然后除以3600可以得到小时差异。

提取出年、月、日、时间等

可以使用 pandas.Series.dt 属性来提取日期时间中的各个部分。例如:

df['year'] = df['datetime'].dt.year
df['month'] = df['datetime'].dt.month
df['day'] = df['datetime'].dt.day
df['hour'] = df['datetime'].dt.hour
df['minute'] = df['datetime'].dt.minute
df['second'] = df['datetime'].dt.second

print(df)
Python

输出结果如下:

   value            datetime  year  month  day  hour  minute  second
0     10 2021-01-01 00:00:00  2021      1    1     0       0       0
1     20 2021-01-02 01:00:00  2021      1    2     1       0       0
2     30 2021-01-03 02:00:00  2021      1    3     2       0       0
3     40 2021-01-04 03:00:00  2021      1    4     3       0       0
4     50 2021-01-05 04:00:00  2021      1    5     4       0       0
Python

将日期时间转换为其他格式

有时候我们需要将日期时间转换为其他格式,例如将日期时间转换为字符串。

df['date_str'] = df['datetime'].dt.strftime('%m/%d/%Y %H:%M:%S')
print(df)
Python

输出结果如下:

   value            datetime  year  month  day  hour  minute  second  \
0     10 2021-01-01 00:00:00  2021      1    1     0       0       0
1     20 2021-01-02 01:00:00  2021      1    2     1       0       0
2     30 2021-01-03 02:00:00  2021      1    3     2       0       0
3     40 2021-01-04 03:00:00  2021      1    4     3       0       0
4     50 2021-01-05 04:00:00

             date_str  
0  01/01/2021 00:00:00  
1  01/02/2021 01:00:00  
2  01/03/2021 02:00:00  
3  01/04/2021 03:00:00  
4  01/05/2021 04:00:00  
Python

这里我们使用 strftime() 将datetime列转换为字符串格式,并指定了日期时间的格式。

总结

在本文中,我们介绍了如何使用Pandas将DataFrame列从字符串转换为日期时间类型。我们还介绍了如何处理日期时间格式,包括获取日期、时间或日期时间的差异,提取出年、月、日、时间等,以及将日期时间转换为其他格式。这些方法对于分析和可视化时间序列数据非常有用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册