Bird
Raised Fist0
Pandasdata~20 mins

to_datetime() for parsing dates in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Date Parsing Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Parsing mixed date formats with to_datetime()
What is the output of this code snippet when parsing mixed date formats using pandas to_datetime()?
Pandas
import pandas as pd

dates = ['2023-01-01', '01/02/2023', 'March 3, 2023', '2023.04.04']
df = pd.DataFrame({'date_str': dates})
df['parsed'] = pd.to_datetime(df['date_str'])
print(df['parsed'].dt.month.tolist())
A[1, 2, 3, 3]
B[1, 1, 3, 4]
C[1, 2, 3, 4]
D[1, 1, 2, 4]
Attempts:
2 left
💡 Hint
Remember that to_datetime() can parse many common date formats automatically.
❓ data_output
intermediate
2:00remaining
Handling errors with to_datetime()
Given this code, what will be the content of the 'parsed' column after running to_datetime() with errors='coerce'?
Pandas
import pandas as pd

dates = ['2023-01-01', 'not a date', '2023-03-15']
df = pd.DataFrame({'date_str': dates})
df['parsed'] = pd.to_datetime(df['date_str'], errors='coerce')
print(df['parsed'].tolist())
A[Timestamp('2023-01-01 00:00:00'), NaT, Timestamp('2023-03-15 00:00:00')]
B[Timestamp('2023-01-01 00:00:00'), 'not a date', Timestamp('2023-03-15 00:00:00')]
C[Timestamp('2023-01-01 00:00:00'), Timestamp('not a date'), Timestamp('2023-03-15 00:00:00')]
D[Timestamp('2023-01-01 00:00:00'), None, Timestamp('2023-03-15 00:00:00')]
Attempts:
2 left
💡 Hint
errors='coerce' replaces invalid parsing with NaT (Not a Time).
❓ visualization
advanced
3:00remaining
Visualizing parsed dates by year
After parsing these date strings with to_datetime(), which bar chart correctly shows the count of dates per year?
Pandas
import pandas as pd
import matplotlib.pyplot as plt

dates = ['2022-12-31', '2023-01-01', '2023-06-15', '2024-01-01']
df = pd.DataFrame({'date_str': dates})
df['parsed'] = pd.to_datetime(df['date_str'])
year_counts = df['parsed'].dt.year.value_counts().sort_index()
year_counts.plot(kind='bar')
plt.show()
ABar chart with bars: 2022=1, 2023=2, 2024=1
BBar chart with bars: 2022=2, 2023=1, 2024=1
CBar chart with bars: 2022=1, 2023=1, 2024=2
DBar chart with bars: 2022=0, 2023=3, 2024=1
Attempts:
2 left
💡 Hint
Count how many dates fall in each year after parsing.
🧠 Conceptual
advanced
2:00remaining
Understanding dayfirst parameter in to_datetime()
What is the output of this code when parsing '01/02/2023' with dayfirst=True?
Pandas
import pandas as pd

date_str = '01/02/2023'
parsed_date = pd.to_datetime(date_str, dayfirst=True)
print(parsed_date.strftime('%Y-%m-%d'))
A"2023-02-12"
B"2023-01-02"
C"2023-12-02"
D"2023-02-01"
Attempts:
2 left
💡 Hint
dayfirst=True means the first number is the day, not the month.
🔧 Debug
expert
3:00remaining
Why does this to_datetime() call raise an error?
Consider this code snippet. Why does it raise a ValueError?
Pandas
import pandas as pd

dates = ['2023-01-01', '2023-02-30']
df = pd.DataFrame({'date_str': dates})
df['parsed'] = pd.to_datetime(df['date_str'], format='%Y-%m-%d')
ABecause to_datetime() cannot parse strings inside a DataFrame column.
BBecause '2023-02-30' is an invalid date and format='%Y-%m-%d' enforces strict parsing.
CBecause the format string is incorrect for the given dates.
DBecause the dates list contains strings instead of datetime objects.
Attempts:
2 left
💡 Hint
Check if all dates are valid calendar dates.

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

  1. 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.
  2. 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.
  3. Final Answer:

    It converts text or numbers into date objects. -> Option B
  4. 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

  1. Step 1: Identify the correct function call

    The function pd.to_datetime() is called with the column as argument to convert it.
  2. 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.
  3. Final Answer:

    df['date_str'] = pd.to_datetime(df['date_str']) -> Option A
  4. 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

  1. 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).
  2. Step 2: Extract the month values

    Using dates.dt.month.tolist() extracts the month numbers as a list: [12, 11].
  3. Final Answer:

    [12, 11] -> Option D
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    The format string does not match the date strings. -> Option C
  4. 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

  1. 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.
  2. 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.
  3. 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.
  4. Final Answer:

    Use pd.to_datetime(df['date_str'], dayfirst=True, errors='coerce') -> Option A
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard