Python Pandas: ValueError: time data '19471' does not match format '%YQ' (match)
The error message "ValueError: time data '19471' does not match format '%YQ' (match)" arises when using pd.to_datetime in pandas to convert a string representation of a date to a datetime object. This error indicates that the format you specified in the format argument does not match the actual format of the date string in your data.
In this case, the code attempts to convert a string like '19471' using the format '%YQ'. The format '%YQ' expects a string in the format 'YYYYQ', where 'YYYY' is the year and 'Q' is the quarter of the year. However, the provided string '19471' does not have the 'Q' component and is likely just the year value.
To resolve this error, you need to modify the format string to correctly match the date format present in your data. Since '19471' seems to represent only the year, you can use the format '%Y' instead of '%YQ'.
Here's the updated code:
import pandas as pd
df = pd.DataFrame({'yyyyq': ['19471', '19482', '19493']})
df['time'] = pd.to_datetime(df['yyyyq'].astype(str), format='%Y')
print(df)
This code will now successfully convert the 'yyyyq' column to datetime objects representing the years.
Important Note: Make sure to double-check the format of your date strings and adjust the format argument accordingly. Refer to the Python datetime documentation for a complete list of formatting codes: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
If the issue persists even after verifying the format, it might be due to other factors such as:
- Incorrectly formatted input: Double-check that your date strings are consistently formatted according to the provided
formatargument. - Missing values: Ensure that all values in the input column are valid date strings, and handle missing values appropriately.
- Data type inconsistencies: Make sure the column you're converting is indeed a string type. If it's not, convert it to a string first before using
pd.to_datetime. - Ambiguous date formats: If your dates have ambiguous formats (e.g., '01/02/2023' could be interpreted as either January 2nd or February 1st), consider using the
dayfirstoryearfirstarguments to clarify the date interpretation.
By addressing these points and ensuring proper format matching, you can effectively convert your date strings to datetime objects in pandas.
原文地址: http://www.cveoy.top/t/topic/lMsy 著作权归作者所有。请勿转载和采集!