Skip to content

BUG: Fix DataFrame.from_records w/ normal ndarray. #4727

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

jtratner
Copy link
Contributor

@jtratner jtratner commented Sep 1, 2013

I haven't looked at the from_records code before, which is why I'm spending all this time laying out a relatively minor change. Previously, was causing a TypeError about None not being iterable when arr.dtype.names was None. Now goes to 'last ditch' parsing instead.

This was the original test case (that dates back, in one form or another, to at least 2010), looked like this:

self.assertRaises(Exception, DataFrame.from_records, np.zeros((2, 3)))

Problem is that the actual Exception was a TypeError: None is not iterable-style exception, not something internal to the code. I changed this so now an ndarray that isn't structured (i.e., has arr.dtype.names is None) is treated separately from the structured ndarrays (so it goes into the general case 'last ditch' verison).

Now it basically produces the same thing as passing the array to the DataFrame constructor:

arr2 = np.zeros((2,3))
tm.assert_frame_equal(DataFrame.from_records(arr2), DataFrame(arr2))

Previously, was causing a TypeError about None not being iterable when
arr.dtype.names was None. Now goes to 'last ditch' parsing instead.
@jreback
Copy link
Contributor

jreback commented Sep 1, 2013

looks good

this is basically a call to main constructor

ot: there is an issue out there for te reverse
eg main constructor should dispatch to from_records if either an ndarray has dtype.names or the dtype is a compound type

@jtratner
Copy link
Contributor Author

jtratner commented Sep 1, 2013

okay - let's push that to a separate PR though.

jtratner added a commit that referenced this pull request Sep 1, 2013
…ndarray

BUG: Fix DataFrame.from_records w/ normal ndarray.
@jtratner jtratner merged commit 8f9adb7 into pandas-dev:master Sep 1, 2013
@jtratner jtratner deleted the fix-from-records-unstructured-ndarray branch September 1, 2013 21:05
@jreback
Copy link
Contributor

jreback commented Sep 1, 2013

agrees just fyi

@jtratner
Copy link
Contributor Author

jtratner commented Sep 1, 2013

Well, this is the kind of thing that surfaces up when you clean up the Exception testing code (plus, it's a lot easier now that you can use assertRaises and assertRaisesRegexp as contextmanagers...makes it much easier to read).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants