Как извлечь дату из файла Excel с помощью Pandas?

Опубликовано: 27 Марта, 2022

Предварительное условие: регулярные выражения в Python

В этой статье давайте посмотрим, как извлечь дату из файла Excel. Предположим, что наш файл Excel выглядит так, как показано на рисунке ниже, тогда нам нужно извлечь дату из строки и сохранить ее в новом столбце Dataframe.

date_sample_data.xlsx

Для просмотра файла Excel щелкните здесь.

Подход :

  • Импортируйте необходимый модуль.
  • Импортируйте данные из файла Excel.
  • Сделайте дополнительный столбец для новой даты.
  • Установите индекс для поиска.
  • Определите шаблон формата даты.
  • Дата поиска и присвоение соответствующему столбцу в Dataframe.

Давайте посмотрим на пошаговую реализацию:

Step 1: Import the required module and read data from the Excel file.

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

Выход:

Step 2: Make an extra column for a new date.

Python3

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

Выход:

Step 3: Set Index for searching.

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: Определение шаблона формата даты.

Нам нужно создать регулярное выражение для шаблона даты в формате ДД / ММ / ГГ. Используйте выражение [0-9], чтобы найти в скобках любой символ, являющийся цифрой. Используйте escape-последовательность «» для экранирования специального символа «/» , а {2} , {4} используются для обозначения того, сколько раз символ не принадлежит данной строке. Таким образом, выражение становится «[0-9] {2} / [0-9] {2} / [0-9] {4}» .

Example:

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.

For searching the Date using regex in a string we are using re.search()function of re library.

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

Выход:

Complete Code:

Python3

# importing required module
import pandas as pd;
import re;
  
data = pd.read_excel("date_sample_data.xlsx");
  
print("Original data : ",
      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

Выход:

Примечание. Перед запуском этой программы убедитесь, что вы уже установили библиотеку xlrd в среде Python.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.