2.2.x Enhance to_numeric to support hexadecimal, octal, and binary string inputs #59794
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added a Helper Function parse_numeric:
Introduced a new internal function parse_numeric that attempts to parse strings with base prefixes:
Uses int(value, 0) to automatically detect the numerical base from the string prefix.
If parsing as an integer fails, it attempts to parse the value as a float.
Returns libmissing.NA if both parsing attempts fail.
Modified the Parsing Logic in to_numeric:
Replaced the call to lib.maybe_convert_numeric with a loop that applies parse_numeric to each element.
Handles errors according to the errors parameter:
Raises a ValueError with informative messaging when errors='raise'.
Sets unparseable values to NaN when errors='coerce'.
Utilizes a mask (new_mask) to track which values could not be parsed.