diff --git a/pandas/_libs/tslib.pyx b/pandas/_libs/tslib.pyx index fe4078f611f7e..55057ff628619 100644 --- a/pandas/_libs/tslib.pyx +++ b/pandas/_libs/tslib.pyx @@ -595,7 +595,7 @@ cpdef array_to_datetime( continue elif is_raise: raise ValueError( - f"time data {val} doesn't match format specified" + f"time data \"{val}\" at position {i} doesn't match format specified" ) return values, tz_out @@ -611,7 +611,7 @@ cpdef array_to_datetime( if is_coerce: iresult[i] = NPY_NAT continue - raise TypeError("invalid string coercion to datetime") + raise TypeError(f"invalid string coercion to datetime for \"{val}\" at position {i}") if tz is not None: seen_datetime_offset = True diff --git a/pandas/_libs/tslibs/parsing.pyx b/pandas/_libs/tslibs/parsing.pyx index 1d5bbf87090eb..8c223020c4012 100644 --- a/pandas/_libs/tslibs/parsing.pyx +++ b/pandas/_libs/tslibs/parsing.pyx @@ -286,7 +286,7 @@ def parse_datetime_string( datetime dt if not _does_string_look_like_datetime(date_string): - raise ValueError('Given date string not likely a datetime.') + raise ValueError(f'Given date string {date_string} not likely a datetime') if does_string_look_like_time(date_string): # use current datetime as default, not pass _DEFAULT_DATETIME @@ -320,7 +320,7 @@ def parse_datetime_string( except TypeError: # following may be raised from dateutil # TypeError: 'NoneType' object is not iterable - raise ValueError('Given date string not likely a datetime.') + raise ValueError(f'Given date string {date_string} not likely a datetime') return dt @@ -396,7 +396,7 @@ cdef parse_datetime_string_with_reso( int out_tzoffset if not _does_string_look_like_datetime(date_string): - raise ValueError('Given date string not likely a datetime.') + raise ValueError(f'Given date string {date_string} not likely a datetime') parsed, reso = _parse_delimited_date(date_string, dayfirst) if parsed is not None: diff --git a/pandas/tests/scalar/period/test_period.py b/pandas/tests/scalar/period/test_period.py index 20d6b9e77a034..c9e28f8249c1b 100644 --- a/pandas/tests/scalar/period/test_period.py +++ b/pandas/tests/scalar/period/test_period.py @@ -301,7 +301,7 @@ def test_invalid_arguments(self): with pytest.raises(ValueError, match=msg): Period(month=1) - msg = "Given date string not likely a datetime" + msg = "Given date string -2000 not likely a datetime" with pytest.raises(ValueError, match=msg): Period("-2000", "A") msg = "day is out of range for month" diff --git a/pandas/tests/tools/test_to_datetime.py b/pandas/tests/tools/test_to_datetime.py index 4050817b39b88..7e698b7a6b83d 100644 --- a/pandas/tests/tools/test_to_datetime.py +++ b/pandas/tests/tools/test_to_datetime.py @@ -951,7 +951,7 @@ def test_datetime_invalid_scalar(self, value, format, infer): msg = ( "is a bad directive in format|" "second must be in 0..59|" - "Given date string not likely a datetime" + f"Given date string {value} not likely a datetime" ) with pytest.raises(ValueError, match=msg): to_datetime( @@ -1003,7 +1003,7 @@ def test_datetime_invalid_index(self, values, format, infer): msg = ( "is a bad directive in format|" - "Given date string not likely a datetime|" + f"Given date string {values[0]} not likely a datetime|" "second must be in 0..59" ) with pytest.raises(ValueError, match=msg): @@ -2220,7 +2220,7 @@ def test_day_not_in_month_raise(self, cache): @pytest.mark.parametrize("arg", ["2015-02-29", "2015-02-32", "2015-04-31"]) def test_day_not_in_month_raise_value(self, cache, arg): - msg = f"time data {arg} doesn't match format specified" + msg = f'time data "{arg}" at position 0 doesn\'t match format specified' with pytest.raises(ValueError, match=msg): to_datetime(arg, errors="raise", format="%Y-%m-%d", cache=cache)