使用正则表达式

从给定熊猫数据帧的指定列中提取日期

原文:https://www . geesforgeks . org/extract-date-from-a-specified-column-of-a-pandas-data frame-use-regex/

在本文中,我们将讨论如何从给定数据框的指定列中仅提取有效日期。从指定列中提取的日期应该采用“mm-dd-yyyy”的形式。

进场:

在本文中,我们使用了一个正则表达式从数据框的指定列中提取有效日期。这里我们使用了\ b(1[0-2]| 0[1-9])/(3[01]|[12][0-9]| 0[1-9])/([0-9]{ 4 })\ b 这个正则表达式。我们将为此使用 re.findall()方法。现在让我们尝试使用 Python 来实现这一点:

步骤 1: 创建数据帧

Python 3

# importing pandas and re library
import pandas as pd
import re as re

# creating data frame with column
# name,date_of_birth and age
df = pd.DataFrame({'Name': ['Akash', 'Shyam', 'Ayush',
                            'Diksha', 'Radhika'],

                   'date_of_birth': ['12/21/1998', '15/12/1998',
                                     '06/11/2000', '05/10/1998',
                                     '13/12/2010'],

                   'Age': [21, 12, 20, 21, 10]})

# printing the original data frame
print("Printing the original dataframe")
df

输出:

第二步:从数据帧中提取有效日期,格式为‘mm-DD-yyyy’

Python 3

# creating function to find whether the 
# given date is valid or not
def checking_valid_dates(dt):

    # creating regular expression to check 
    # whether date fall in the format 
    # mm-dd-yyyy
    result = re.findall(
        r'\b(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/([0-9]{4})\b', dt)
    return result

# creating new column with valid_date_of_birth
df['valid_date_of_birth'] = df['date_of_birth'].apply(
    lambda dt: checking_valid_dates(dt))

print("\nPrinting the data frame Valid dates in the format: mm-dd-yyyy:")
df

输出: