使用Regex从给定的Pandas DataFrame的指定列中提取日期

  • Post category:Python

当从Pandas DataFrame的指定列中提取日期时,可以使用Regex(正则表达式)来提取。下面是一个基本的步骤:

  1. 确定要使用的特定列名,假设我们要提取的列名为date

  2. 使用Pandas中的str属性来选择特定的列名,然后使用正则表达式模式来匹配表示日期的模式。

  3. 正则表达式模式可以根据不同的日期格式进行适当的调整。例如,字符串’01-01-2020’可以使用模式'(\d{2})-(\d{2})-(\d{4})’进行匹配。

  4. 一旦找到匹配的模式,我们可以使用Pandas的to_datetime函数将其转换为日期格式,并将其应用于原始数据。

下面是一个简单的示例,使用正则表达式从给定的Pandas DataFrame中提取日期。

首先,我们创建一个具有不同日期格式的Pandas DataFrame:

import pandas as pd

# creating pandas DataFrame
df = pd.DataFrame({
  'date': ['01/01/2020', '2020-01-01', '01-01-20', '20 Jan 2020']
})

# displaying the DataFrame
print(df)

输出如下:

         date
0  01/01/2020
1  2020-01-01
2    01-01-20
3  20 Jan 2020

我们可以看到,该DataFrame包含四种不同的日期格式。让我们使用正则表达式将日期提取出来。

# using regex to extract date from the 'date' column
df['date'] = pd.to_datetime(df['date'].str.extract('(\d{2}\/\d{2}\/\d{4}|\d{4}\-\d{2}\-\d{2}|\d{2}\-\d{2}\-\d{2}|%d %b %Y)')[0])

# displaying the updated DataFrame
print(df)

输出如下:

        date
0 2020-01-01
1 2020-01-01
2 2020-01-01
3 2020-01-20

在这里,我们使用了正则表达式模式来匹配四种不同的日期格式,并将其转换为日期格式使用Pandas的to_datetime方法。我们将提取出来的日期应用于原始数据,并更新了DataFrame。

需要注意的是,使用正则表达式提取日期时,您需要确保将其用作参数传递到to_datetime函数中的表达式仅返回一个日期字符串。如果实际情况不同,则可能会出现错误,因此请确保验证结果。