Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pandas/src/inference.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -686,9 +686,9 @@ def maybe_convert_numeric(object[:] values, set na_values,
raise ValueError('integer out of range')
else:
seen_float = True
except:
except (TypeError, ValueError) as e:
if not coerce_numeric:
raise
raise type(e)(e.message + ' in row {}'.format(i))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

acutally maybe row is not the word, these are 1-d arrays, so maybe entry? value at index i?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry to do a bit purist, but 'array index' sounds also a bit strange when you pass a Series and not an array. And given that just 'at index' can be confused with the actual index labels, maybe just 'at position ..' ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I do think that's better.


floats[i] = nan
seen_float = True
Expand Down
2 changes: 1 addition & 1 deletion pandas/src/parse_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ int floatify(PyObject* str, double *result, int *maybe_int) {
return 0;

parsingerror:
PyErr_SetString(PyExc_ValueError, "Unable to parse string");
PyErr_Format(PyExc_ValueError, "Unable to parse string \"%s\"", data);
Py_XDECREF(tmp);
return -1;

Expand Down
11 changes: 9 additions & 2 deletions pandas/tools/tests/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,8 @@ def test_series_numeric(self):

def test_error(self):
s = pd.Series([1, -3.14, 'apple'])
with tm.assertRaises(ValueError):
msg = 'Unable to parse string "apple" in row 2'
with tm.assertRaisesRegexp(ValueError, msg):
to_numeric(s, errors='raise')

res = to_numeric(s, errors='ignore')
Expand All @@ -131,9 +132,15 @@ def test_error(self):
expected = pd.Series([1, -3.14, np.nan])
tm.assert_series_equal(res, expected)

s = pd.Series(['orange', 1, -3.14, 'apple'])
msg = 'Unable to parse string "orange" in row 0'
with tm.assertRaisesRegexp(ValueError, msg):
to_numeric(s, errors='raise')

def test_error_seen_bool(self):
s = pd.Series([True, False, 'apple'])
with tm.assertRaises(ValueError):
msg = 'Unable to parse string "apple" in row 2'
with tm.assertRaisesRegexp(ValueError, msg):
to_numeric(s, errors='raise')

res = to_numeric(s, errors='ignore')
Expand Down