Python - Filter Pandas DataFrame by Time

Filtering a Pandas DataFrame by time allows you to extract records that meet specific date or time conditions. Use the loc indexer with datetime comparisons to filter rows based on date ranges.

Basic Time Filtering with loc

First, create a DataFrame with date information ?

import pandas as pd

# Create dictionary with car purchase data
data = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
    'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17', '2021-03-16', '2021-05-19', '2021-08-22']
}

# Create DataFrame
dataFrame = pd.DataFrame(data)
print("Original DataFrame:")
print(dataFrame)
Original DataFrame:
        Car Date_of_Purchase
0       BMW        2021-07-10
1     Lexus        2021-08-12
2      Audi        2021-06-17
3  Mercedes        2021-03-16
4    Jaguar        2021-05-19
5   Bentley        2021-08-22

Filtering Records After a Specific Date

Use loc with a date condition to filter rows ?

import pandas as pd

data = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
    'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17', '2021-03-16', '2021-05-19', '2021-08-22']
}

dataFrame = pd.DataFrame(data)

# Filter cars purchased after July 15, 2021
filtered_df = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]

print("Cars purchased after 15th July 2021:")
print(filtered_df)
Cars purchased after 15th July 2021:
       Car Date_of_Purchase
1    Lexus        2021-08-12
5  Bentley        2021-08-22

Using datetime for Better Performance

Convert date strings to datetime objects for more efficient filtering ?

import pandas as pd
from datetime import datetime

data = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
    'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17', '2021-03-16', '2021-05-19', '2021-08-22']
}

dataFrame = pd.DataFrame(data)

# Convert to datetime
dataFrame['Date_of_Purchase'] = pd.to_datetime(dataFrame['Date_of_Purchase'])

# Filter using datetime object
cutoff_date = datetime(2021, 6, 1)
recent_purchases = dataFrame.loc[dataFrame['Date_of_Purchase'] > cutoff_date]

print("Cars purchased after June 1, 2021:")
print(recent_purchases)
Cars purchased after June 1, 2021:
        Car Date_of_Purchase
0       BMW        2021-07-10
1     Lexus        2021-08-12
2      Audi        2021-06-17
4    Jaguar        2021-05-19
5   Bentley        2021-08-22

Filtering by Date Range

Use boolean conditions to filter data within a specific date range ?

import pandas as pd

data = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
    'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17', '2021-03-16', '2021-05-19', '2021-08-22']
}

dataFrame = pd.DataFrame(data)
dataFrame['Date_of_Purchase'] = pd.to_datetime(dataFrame['Date_of_Purchase'])

# Filter for cars purchased between May and July 2021
summer_purchases = dataFrame.loc[
    (dataFrame['Date_of_Purchase'] >= '2021-05-01') & 
    (dataFrame['Date_of_Purchase'] <= '2021-07-31')
]

print("Cars purchased between May and July 2021:")
print(summer_purchases)
Cars purchased between May and July 2021:
       Car Date_of_Purchase
0      BMW        2021-07-10
2     Audi        2021-06-17
4   Jaguar        2021-05-19

Conclusion

Use loc with date string comparisons for simple filtering. Convert to datetime objects for better performance and more complex date operations. Combine conditions with & and | operators for date range filtering.

Updated on: 2026-03-26T02:44:13+05:30

727 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements