{"record":{"id":"2e92b94278d7c12f","repo":"pandas-dev/pandas","slug":"supported-timedelta64-resolutions-are-s-ms","errorCode":null,"errorMessage":"Supported timedelta64 resolutions are 's', 'ms', 'us', 'ns'","messagePattern":"Supported timedelta64 resolutions are 's', 'ms', 'us', 'ns'","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"pandas/core/arrays/timedeltas.py","lineNumber":1418,"sourceCode":"\n    result = array_to_timedelta64(values, unit=unit, errors=errors)\n    return result\n\n\ndef _validate_td64_dtype(dtype) -> DtypeObj:\n    dtype = pandas_dtype(dtype)\n    if dtype == np.dtype(\"m8\"):\n        # no precision disallowed GH#24806\n        msg = (\n            \"Passing in 'timedelta' dtype with no precision is not allowed. \"\n            \"Please pass in 'timedelta64[ns]' instead.\"\n        )\n        raise ValueError(msg)\n\n    if not lib.is_np_dtype(dtype, \"m\"):\n        raise ValueError(f\"dtype '{dtype}' is invalid, should be np.timedelta64 dtype\")\n    elif not is_supported_dtype(dtype):\n        raise ValueError(\"Supported timedelta64 resolutions are 's', 'ms', 'us', 'ns'\")\n\n    return dtype\n","sourceCodeStart":1400,"sourceCodeEnd":1421,"githubUrl":"https://github.com/pandas-dev/pandas/blob/71959b8cb9b2459c16e14b34f28b178ccfe14735/pandas/core/arrays/timedeltas.py#L1400-L1421","documentation":"Raised by _validate_td64_dtype for a timedelta64 dtype whose resolution is not one of the supported set ('s','ms','us','ns'). Pandas only stores nanoseconds internally and only those four inbound resolutions are accepted for casting.","triggerScenarios":"`pd.TimedeltaIndex(..., dtype='timedelta64[h]')`, `.astype('timedelta64[D]')`, or any of 'h','D','M','Y','W','fs','as','ps'.","commonSituations":"Using numpy's broader unit vocabulary; reading dtype strings from configs that allow wider units; legacy code targeting older pandas.","solutions":["Use one of the supported resolutions: 's', 'ms', 'us', or 'ns'.","Drop the unit and let pandas default to ns.","For durations in days/hours, store as ns and format on output."],"exampleFix":"// before\ns = df['x'].astype('timedelta64[h]')\n\n// after\ns = df['x'].astype('timedelta64[ns]')","handlingStrategy":"validation","validationCode":"supported = {'s','ms','us','ns'}\nunit = str(dtype).strip('timedelta64[] ')\nif unit not in supported:\n    raise ValueError(f'unsupported timedelta resolution: {unit}')","typeGuard":"def is_supported_td_resolution(dtype) -> bool:\n    import re\n    m = re.search(r'timedelta64\\[([a-z]+)\\]', str(dtype))\n    return bool(m and m.group(1) in {'s','ms','us','ns'})","tryCatchPattern":"try:\n    s = df['x'].astype(dtype)\nexcept ValueError as e:\n    if 'Supported timedelta64 resolutions' in str(e):\n        s = df['x'].astype('timedelta64[ns]')\n    else:\n        raise","preventionTips":["Restrict dtype strings to the supported set.","Use to_timedelta to let pandas pick ns.","Validate config-driven dtype strings."],"tags":["timedelta","dtype","valueerror","resolution"],"analyzedSha":"71959b8cb9b2459c16e14b34f28b178ccfe14735","analyzedAt":"2026-08-07T01:30:20.476Z","schemaVersion":2},"datasetVersion":"2026-08-07T03:17:09.362Z"}