📌  相关文章
📜  如何使用 Pandas 从 Excel 文件中提取日期?

📅  最后修改于: 2022-05-13 01:55:43.005000             🧑  作者: Mango

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

先决条件: Python中的正则表达式

在本文中,让我们看看如何从 Excel 文件中提取日期。假设我们的 Excel 文件如下图所示,那么我们必须从字符串中提取日期并将其存储到新的 Dataframe 列中。

date_sample_data.xlsx

要查看 Excel 文件,请单击此处。

方法 :

  • 导入所需的模块。
  • 从 Excel 文件导入数据。
  • 为新日期制作一个额外的列。
  • 设置搜索索引。
  • 定义日期格式的模式。
  • 搜索日期并分配给 Dataframe 中的相应列。

让我们看看分步实施:

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

Python3
# 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


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


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


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


Python3
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


Python3
# 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


输出:

第 2 步:为新日期创建一个额外的列。

Python3

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

输出:

第 3 步:设置搜索索引。

Python3

# 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

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

我们需要为DD/MM/YY格式的日期模式创建正则表达式。使用[0-9]表达式查找括号之间的任何数字字符。使用转义序列“\”“/”转义为特殊符号, {2}{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)

Python3

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

第 5 步:搜索日期并分配给 Dataframe 中的相应列。

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

Python3

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

输出:

完整代码:

Python3

# 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

输出:

注意:在运行此程序之前,请确保您已经在Python环境中安装了xlrd库。