如何使用Pandas从Excel文件中提取日期

如何使用Pandas从Excel文件中提取日期

在这篇文章中,让我们看看如何从Excel文件中提取日期。假设我们的Excel文件看起来像下面给出的图片,那么我们必须从字符串中提取日期并将其存储到一个新的数据框架列中。

如何使用Pandas从Excel文件中提取日期?

date_sample_data.xlsx

步骤:

  • 导入所需模块。
  • 从Excel文件导入数据。
  • 为新的日期多做一列。
  • 设置搜索的索引。
  • 定义日期格式的模式。
  • 搜索日期,并将其分配给数据框架中的相应列。

让我们来看看一步一步的实施情况。

第1步:导入所需的模块并从Excel文件中读取数据。

# import required module
import pandas as pd;
import re;
  
# Read excel file and store in to DataFrame
data = pd.read_excel("date_sample_data.xlsx");
  
print("Original DataFrame")
data

输出:

如何使用Pandas从Excel文件中提取日期?

第2步:为新的日期多做一列。

# Create column for Date
data['new_Date']= None
data

输出:

如何使用Pandas从Excel文件中提取日期?

第3步:设置搜索的索引。

# set required index
index_set = data.columns.get_loc('Description')
index_date = data.columns.get_loc('new_Date')
  
print(index_set, index_date)

输出:

1 2

第四步:定义日期格式的模式。

我们需要为DD/MM/YY格式的日期模式创建一个正则表达式。使用[0-9]表达式来查找括号内的任何字符,即数字。使用转义序列”\”来转义”/”这个特殊符号,并使用{2} , {4}来表示数字的数量。, {4}用于表示一个字符在给定字符串中的次数。所以表达式变成了'[0-9]{2}/[0-9]{2}/[0-9]{4}’ 。

示例:

02/04/2020
02 -----> [0 to 9] --> [0-9]
number of character inside the string {2} ( i.e DD)

04- ----> [0 to 9] --> [0-9]
number of character inside the string {2} ( i.e MM)

2020 -->[0 to 9] -->[0-9]
number of character inside the sting {4} ( i.e YYYY)

# In DD/MM/YYYY
date_pattern = r'([0-9]{2}\/[0-9]{2}\/[0-9]{4})'

步骤5:搜索日期并将其分配给数据框架中的相应列。

为了在字符串中使用regex搜索日期,我们使用re库的re.search()函数。

for row in range(0, len(data)):
    Date = re.search(date_pattern,data.iat[row,index_set]).group()
    data.iat[row, index_date] = Date
      
# show the Dataframe
data

输出:

如何使用Pandas从Excel文件中提取日期?

完整代码:

# importing required module
import pandas as pd;
import re;
  
data = pd.read_excel("date_sample_data.xlsx");
  
print("Original data : \n",
      data)
  
# Create column for Date
data['new_Date'] = None
  
# set index
index_set = data.columns.get_loc('Description')
index_date = data.columns.get_loc('new_Date')
print(index_set, index_date)
  
# define pattern for date
# in DD/MM/YYYY
date_pattern = r'([0-9]{2}\/[0-9]{2}\/[0-9]{4})'
  
# searching pattern
# And storing in to DataFrame
for row in range(0, len(data)):
    Date = re.search(date_pattern, 
                     data.iat[row,index_set]).group()
    data.iat[row, index_date] = Date
  
# show the Dataframe
data

输出:

如何使用Pandas从Excel文件中提取日期?

注意:在运行这个程序之前,确保你已经在你的Python环境中安装了xlrd库。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程