将数据框中的字符串转换为 Numpy Datetime64

Python 包含许多用于处理数据集的开源包。它还支持多种数据类型。当涉及到与日期或时间相关的数据时,最好使用日期时间数据类型而不是字符串或浮点数据类型,因为它有助于保持数据统一。具有相同格式的统一数据类型也有助于避免处理数据时出现错误。

在本文中,让我们尝试了解如何将字符串数据类型的数据转换为 Numpy Datetime 数据类型。我们将探索使用各种包和方法的多种方法来实现这一目标。

在 Pandas Dataframe 中将字符串转换为 Numpy Datetime64 的不同方法

要将字符串转换为 numpy datetime64,您有三个选择:Pandas to_datetime()、astype() 或 datetime.strptime()。如果您想转换整列字符串,则 to_datetime() 函数非常有用。astype() 函数还可以帮助您更改单个列的数据类型。strptime() 函数更适用于单个字符串而不是数据帧列。

有多种方法可以实现此结果。这里有一些将字符串转换为 numpy datetime64 的方法。

使用 Pandas to_datetime() 函数

Pandas 包包含许多有助于修改数据的内置函数;to_datetime 就是这样的函数之一。此函数的主要目标是将提供的参数转换为日期时间格式。在我们开始使用该方法之前,请确保在当前工作的 IDE 中安装并导入 Pandas 包,以避免进一步的错误。运行以下代码行来执行此操作。

# To install the package
pip install pandas
 
# To import the package
import pandas as pd

要了解有关 Pandas to_datetime 函数的更多信息,请单击此处。

为了了解该函数的工作原理,让我们考虑一个包含两列(日期和时间)的示例数据框。两列的数据类型都是“对象”。通过将列名作为参数提供给 to_datetime 函数,列的数据类型将转换为 datetime[64]。查看下面的代码以更好地理解。

df = pd.DataFrame(
    {'Date': ["1-10-2000","1-11-2000","1-12-2000"],
     'Time': ['1:05:00', '2:10:01', '2:15:02']})
print(df.dtypes)
print("---------")
 
x = pd.to_datetime(df['Date'])
y = pd.to_datetime(df['Time'])
print("x.dtypes, "\n", y.dtypes)

输出

使用日期时间函数

使用 Pandas astype() 函数

astype() 是 Pandas 包提供的一个简单函数。该函数用于将数据转换为任何其他指定的数据类型。该函数采用一个字符串参数来指定所需数据类型的名称。以下代码将帮助您了解如何使用此函数将数据从数据帧转换为 datetime64[ns] 数据类型。

df = pd.DataFrame(
    {'Date': ["1-10-2000","1-11-2000","1-12-2000"],
     'Time': ['1:05:00', '2:10:01', '2:15:02']})
print(df.dtypes)
print("---------")
 
x = df.Date.astype('datetime64[ns]')
y = df.Time.astype('datetime64[ns]')
print(x.dtypes)
print(y.dtypes)

输出

使用 Astype 函数

注意:上述方法适用于变量和数据框。当我们讨论字符串数据类型到日期时间数据类型的转换时,添加了以下方法作为奖励。如果您只需要更改特定变量,您可以使用讨论的下一个方法,但请记住它不适用于数据框。

使用 datetime 模块中的 strptime() 函数

在我们开始实现该方法之前,请确保在您的工作 IDE 中导入datetime 包和“datetime”子模块。为此,请在当前 IDE 中运行以下代码行。

import datetime
from datetime import datetime as dt

“strptime()”接受两个字符串作为输入,第一个字符串是我们需要更改为日期时间数据类型的数据,第二个参数是我们作为输入提供的日期或时间的格式。此功能以多种方式进行日期和时间格式化。单击此处了解有关“strptime()”函数使用的格式化代码的更多信息。由于该函数仅考虑字符串作为参数,因此该方法不能用于数据帧。查看以下代码以更好地理解。

import datetime
from datetime import datetime as dt
 
x = "10-04-2000"
print(x, type(x))
print("---------")
 
y = dt.strptime(x, '%d-%m-%Y')
print(y, type(y))

输出

使用 Strptime 函数

结论

在处理日期或时间数据时,将数据框中的字符串转换为 Numpy Datetime64 至关重要,以保持一致性并避免错误。Pandas 中的 to_datetime() 和 astype() 函数可处理数据帧和单个变量,而 datetime 模块中的 strptime() 函数适用于单个字符串。您认为哪种方法对于您的特定数据操作任务最有用?

要扩展您对 Python 编程语言的了解,请单击此处访问我们的网站