Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 725
othymomo Avatar asked Sep 13 '16 15:09

othymomo


1 Answers

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.

like image 143
Kartik Avatar answered Sep 19 '22 10:09

Kartik