othymomo
othymomo

Reputation: 105

ValueError: 'object too deep for desired array'

I have a ValueError: 'object too deep for desired array' in a Python program. I have this error while using numpy.digitize.
I think it's how I use Pandas DataFrames:
To keep it simple (because this is done through an external library), I have a list in my program but the library needs a DataFrame so I do something like this:

ts = range(1000)
df = pandas.DataFrame(ts)
res = numpy.digitize(df.values, bins)

But then it seems like df.values is an array of lists instead of an array of floats. I mean:

array([[   0],
   [   1],
   [   2],
   ..., 
   [997],
   [998],
   [999]], dtype=int64)

Help please, I spent too much time on this.

Upvotes: 7

Views: 19546

Answers (1)

Kartik
Kartik

Reputation: 8693

Try this:

numpy.digitize(df.iloc[:, 0], bins)

You are trying to get the values from a whole DataFrame. That is why you get the 2D array. Each row in the array is a row of the DataFrame.

Upvotes: 4

Related Questions