📖 Scenario: You work in a small business that tracks customer orders. The order dates are stored as text, but you want to analyze them as real dates to find trends.
🎯 Goal: You will convert a list of order date strings into proper date objects using pandas to_datetime(). This will help you work with dates easily.
📋 What You'll Learn
Create a pandas DataFrame with order IDs and order date strings
Create a variable for the date column name
Use pandas to_datetime() to convert the date strings to datetime objects
Print the DataFrame to see the converted dates
💡 Why This Matters
🌍 Real World
Businesses often receive dates as text from forms or files. Converting them to datetime lets you analyze sales trends, delays, or seasonal patterns.
💼 Career
Data analysts and scientists frequently clean and prepare date data before analysis. Knowing how to parse dates is a key skill in data cleaning.
Progress0 / 4 steps
1
Create the orders DataFrame
Create a pandas DataFrame called orders with two columns: 'order_id' containing [101, 102, 103] and 'order_date' containing ['2024-01-15', '2024-02-20', '2024-03-10'].
Pandas
Hint
Use pd.DataFrame with a dictionary containing the two columns and their values.
2
Set the date column name
Create a variable called date_column and set it to the string 'order_date'.
Pandas
Hint
Just assign the string 'order_date' to the variable date_column.
3
Convert the order_date strings to datetime
Use pandas to_datetime() to convert the orders[date_column] column to datetime objects. Assign the result back to orders[date_column].
Pandas
Hint
Use pd.to_datetime() on the column and assign it back to the same column.
4
Print the DataFrame with parsed dates
Print the orders DataFrame to see the order_date column as datetime objects.
Pandas
Hint
Use print(orders) to display the DataFrame.
Practice
(1/5)
1. What does the pandas.to_datetime() function do?
easy
A. It filters rows based on date values.
B. It converts text or numbers into date objects.
C. It sorts data in ascending order.
D. It converts numbers into strings.
Solution
Step 1: Understand the purpose of to_datetime()
This function is used to change text or numbers that represent dates into actual date objects that pandas can understand.
Step 2: Compare options with the function's purpose
Only It converts text or numbers into date objects. correctly describes this conversion. Other options describe unrelated operations.
Final Answer:
It converts text or numbers into date objects. -> Option B
Quick Check:
to_datetime() = converts to dates [OK]
Hint: to_datetime() changes strings/numbers into dates [OK]
Common Mistakes:
Thinking it sorts data
Confusing it with string conversion
Assuming it filters data
2. Which of the following is the correct syntax to convert a column named 'date_str' in DataFrame df to datetime using pandas?
easy
A. df['date_str'] = pd.to_datetime(df['date_str'])
B. df.to_datetime('date_str')
C. pd.to_datetime(df.date_str, inplace=True)
D. df['date_str'].to_datetime()
Solution
Step 1: Identify the correct function call
The function pd.to_datetime() is called with the column as argument to convert it.
Step 2: Check assignment to the DataFrame column
The converted datetime values must be assigned back to the column to update it, which df['date_str'] = pd.to_datetime(df['date_str']) does correctly.
Final Answer:
df['date_str'] = pd.to_datetime(df['date_str']) -> Option A
Quick Check:
Use pd.to_datetime() and assign back [OK]
Hint: Use pd.to_datetime(column) and assign back [OK]
Common Mistakes:
Calling to_datetime as a DataFrame method
Using inplace parameter which does not exist
Not assigning the result back to the column
3. What will be the output of this code?
import pandas as pd
s = pd.Series(['01-12-2023', '02-11-2023'])
dates = pd.to_datetime(s, dayfirst=True)
print(dates.dt.month.tolist())
medium
A. [2, 1]
B. [1, 2]
C. [11, 12]
D. [12, 11]
Solution
Step 1: Understand the input strings and dayfirst=True
The strings are '01-12-2023' and '02-11-2023'. With dayfirst=True, '01-12-2023' means 1st December 2023 (month=12), and '02-11-2023' means 2nd November 2023 (month=11).
Step 2: Extract the month values
Using dates.dt.month.tolist() extracts the month numbers as a list: [12, 11].
Final Answer:
[12, 11] -> Option D
Quick Check:
dayfirst=True swaps day and month [OK]
Hint: dayfirst=True means day is first in date string [OK]
Common Mistakes:
Ignoring dayfirst and reading month first
Mixing up month numbers
Confusing string format with default parsing
4. Identify the error in this code snippet:
import pandas as pd
s = pd.Series(['2023/12/01', '2023/11/02'])
dates = pd.to_datetime(s, format='%Y-%m-%d')
print(dates)
medium
A. The to_datetime function requires dayfirst=True here.
B. The Series should be converted using astype('datetime64').
C. The format string does not match the date strings.
D. The date strings are missing time information.
Solution
Step 1: Compare date strings with format string
The date strings use slashes '/' like '2023/12/01', but the format string expects dashes '-' as in '%Y-%m-%d'. This mismatch causes a parsing error.
Step 2: Understand the impact of format mismatch
Because the format does not match the input, pandas will raise an error or fail to parse correctly.
Final Answer:
The format string does not match the date strings. -> Option C
Quick Check:
Format must match date string exactly [OK]
Hint: Match format string exactly to date string separators [OK]
Common Mistakes:
Using wrong separators in format
Assuming astype converts strings to dates
Adding dayfirst when not needed
5. You have a DataFrame df with a column 'date_str' containing dates in mixed formats like '2023-12-01' and '01/12/2023'. How can you convert this column to datetime correctly?
hard
A. Use pd.to_datetime(df['date_str'], dayfirst=True, errors='coerce') to parse with day first and convert errors to NaT.
B. Use pd.to_datetime(df['date_str'], format='%Y-%m-%d') to force one format.
C. Use df['date_str'].astype('datetime64') to convert automatically.
D. Use pd.to_datetime(df['date_str'], exact=true) to parse exactly.
Solution
Step 1: Understand mixed date formats
Since the column has mixed formats (ISO and day/month/year), specifying a single format will fail for some entries.
Step 2: Use flexible parsing with dayfirst=True and handle errors
Using dayfirst=True helps interpret dates like '01/12/2023' correctly. Setting errors='coerce' converts unparseable dates to NaT instead of error.
Step 3: Avoid forcing a single format or using astype
Forcing a format or using astype will cause errors or wrong parsing with mixed formats.
Final Answer:
Use pd.to_datetime(df['date_str'], dayfirst=True, errors='coerce') -> Option A
Quick Check:
Flexible parsing with dayfirst and error handling [OK]
Hint: Use dayfirst=True and errors='coerce' for mixed formats [OK]
Common Mistakes:
Forcing a single format on mixed data
Using astype for string to datetime
Ignoring errors causing exceptions
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.