Как извлечь дату из файла Excel с помощью Pandas?
Предварительное условие: регулярные выражения в 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 moduleimport pandas as pd;import re; # Read excel file and store in to DataFramedata = 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 Datedata["new_Date"]= Nonedata |
Выход:

Step 3: Set Index for searching.
Python3
# set required indexindex_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/YYYYdate_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 Dataframedata |
Выход:

Complete Code:
Python3
# importing required moduleimport pandas as pd;import re; data = pd.read_excel("date_sample_data.xlsx"); print("Original data :
", data) # Create column for Datedata["new_Date"] = None # set indexindex_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/YYYYdate_pattern = r"([0-9]{2}/[0-9]{2}/[0-9]{4})" # searching pattern# And storing in to DataFramefor 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 Dataframedata |
Выход:

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