Pandas 如何将多个列的数据转换为日期时间类型

Pandas 如何将多个列的数据转换为日期时间类型

在本文中,我们将介绍在Pandas中如何将多个列的数据转换为一个日期时间类型的列。

首先,我们需要了解Pandas中日期时间类型的表示。在Pandas中,日期时间类型被表示为DatetimeIndex对象,它可以作为DataFrame的一列。

阅读更多:Pandas 教程

pandas.to_datetime方法

要将多个列的数据转换为日期时间类型,我们可以使用pandas.to_datetime方法。该方法可以将一系列的字符串(如时间戳)转换为DatetimeIndex对象。

下面是一个示例,我们将创建一个DataFrame,包含年份、月份和日期列:

import pandas as pd

df = pd.DataFrame({'year':[2018, 2019],
                   'month':[1, 2],
                   'day':[1, 15]})

print(df)
Python

输出:

   year  month  day
0  2018      1    1
1  2019      2   15
Python

现在,我们将使用pandas.to_datetime方法将这三列转换为一个日期时间类型的列:

df['date'] = pd.to_datetime(df[['year', 'month', 'day']])
print(df)
Python

输出:

   year  month  day       date
0  2018      1    1 2018-01-01
1  2019      2   15 2019-02-15
Python

如上所示,我们可以将多个列的数据转换为一个日期时间类型的列。我们可以使用to_datetime方法并将要转换的列作为一个列表传递给它。

如果我们只有一个列需要转换为日期时间类型,那么我们可以省略列表。下面是一个示例,我们将创建一个包含时间戳的DataFrame:

df = pd.DataFrame({'timestamp':['2018-01-01 01:01:01', '2019-02-15 20:20:20']})

print(df)
Python

输出:

             timestamp
0  2018-01-01 01:01:01
1  2019-02-15 20:20:20
Python

现在,我们将使用pandas.to_datetime方法将这个字符串列转换为一个日期时间类型的列:

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

输出:

             timestamp                date
0  2018-01-01 01:01:01 2018-01-01 01:01:01
1  2019-02-15 20:20:20 2019-02-15 20:20:20
Python

如上所示,我们可以使用to_datetime方法将包含时间戳的列转换为日期时间类型的列。

指定日期时间格式

在某些情况下,我们需要指定时间戳的格式。例如,如果我们的时间戳包含毫秒,我们需要指定格式为’%Y-%m-%d %H:%M:%S.%f’。

下面是一个示例,我们将创建一个包含带有毫秒的时间戳的DataFrame:

df = pd.DataFrame({'timestamp':['2018-01-01 01:01:01.123', '2019-02-15 20:20:20.456']})

print(df)
Python

输出:

                 timestamp
0  2018-01-01 01:01:01.123
1  2019-02-15 20:20:20.456
Python

现在,我们将使用pandas.to_datetime方法将这个字符串列转换为一个日期时间类型的列,并指定格式为’%Y-%m-%d %H:%M:%S.%f’:

df['date'] = pd.to_datetime(df['timestamp'], format='%Y-%m-%d %H:%M:%S.%f')
print(df)
Python

输出:

                 timestamp                    date
0  2018-01-01 01:01:01.123 2018-01-01 01:01:01.123
1  2019-02-15 20:20:20.456 2019-02-15 20:20:20.456000
Python

如上所示,我们可以使用format参数来指定时间戳的格式。

处理缺失值

在实际的数据分析中,我们经常会遇到缺失值。当存在缺失值时,pandas.to_datetime方法将返回NaT(Not a Time)。

下面是一个示例,我们将创建一个DataFrame,其中包含一个缺失值:

df = pd.DataFrame({'timestamp':['2018-01-01 01:01:01', '2019-02-15 20:20:20', None]})

print(df)
Python

输出:

             timestamp
0  2018-01-01 01:01:01
1  2019-02-15 20:20:20
2                 None
Python

现在,我们将使用pandas.to_datetime方法将这个字符串列转换为一个日期时间类型的列:

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

输出:

             timestamp                date
0  2018-01-01 01:01:01 2018-01-01 01:01:01
1  2019-02-15 20:20:20 2019-02-15 20:20:20
2                 None                 NaT
Python

如上所示,我们可以看到第三行的值为NaT,表示缺失值。

总结

在Pandas中,我们可以使用pandas.to_datetime方法将多个列的数据转换为一个日期时间类型的列,也可以将包含时间戳的列转换为日期时间类型的列。我们还可以使用format参数指定时间戳的格式,处理缺失值时会返回NaT。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册