w3resource

Pandas: Extract date from a given column of a given DataFrame

Pandas: String and Regular Expression Exercise-36 with Solution

Write a Pandas program to extract date (format: mm-dd-yyyy) from a given column of a given DataFrame.

Sample Solution:

Python Code :

import pandas as pd
import re as re
df = pd.DataFrame({
    'company_code': ['Abcd','EFGF', 'zefsalf', 'sdfslew', 'zekfsdf'],
    'date_of_sale': ['12/05/2002','16/02/1999','05/09/1998','12/02/2022','15/09/1997'],
    'sale_amount': [12348.5, 233331.2, 22.5, 2566552.0, 23.0]
})
print("Original DataFrame:")
print(df)
def find_valid_dates(dt):
    #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
df['valid_dates']=df['date_of_sale'].apply(lambda dt : find_valid_dates(dt))
print("\nValid dates (format: mm-dd-yyyy):")
print(df)

Sample Output:

Original DataFrame:
  company_code date_of_sale  sale_amount
0         Abcd   12/05/2002      12348.5
1         EFGF   16/02/1999     233331.2
2      zefsalf   05/09/1998         22.5
3      sdfslew   12/02/2022    2566552.0
4      zekfsdf   15/09/1997         23.0

Valid dates (format: mm-dd-yyyy):
  company_code date_of_sale  sale_amount       valid_dates
0         Abcd   12/05/2002      12348.5  [(12, 05, 2002)]
1         EFGF   16/02/1999     233331.2                []
2      zefsalf   05/09/1998         22.5  [(05, 09, 1998)]
3      sdfslew   12/02/2022    2566552.0  [(12, 02, 2022)]
4      zekfsdf   15/09/1997         23.0                []

Python Code Editor:


Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Pandas program to check whether two given words present in a specified column of a given DataFrame.
Next: Write a Pandas program to extract only words from a given column of a given DataFrame.

What is the difficulty level of this exercise?

Test your Python skills with w3resource's quiz



Python: Tips of the Day

Returns every nth element in a list

Example:

def tips_every_nth(lst, nth):
  return lst[nth - 1::nth]

print(tips_every_nth([1, 2, 3, 4, 5, 6, 7, 8, 9], 3))]

Output:

[3, 6, 9]