Reshape of pandas series? Reshape of pandas series? numpy numpy

Reshape of pandas series?


You can call reshape on the values array of the Series:

In [4]: a.values.reshape(2,2)Out[4]: array([[1, 2],       [3, 4]], dtype=int64)

I actually think it won't always make sense to apply reshape to a Series (do you ignore the index?), and that you're correct in thinking it's just numpy's reshape:

a.reshape?
Docstring: See numpy.ndarray.reshape

that said, I agree the fact that it let's you try to do this looks like a bug.


The reshape function takes the new shape as a tuple rather than as multiple arguments:

In [4]: a.reshape?Type:       functionString Form:<function reshape at 0x1023d2578>File:       /Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/numpy/core/fromnumeric.pyDefinition: numpy.reshape(a, newshape, order='C')Docstring:Gives a new shape to an array without changing its data.Parameters----------a : array_like    Array to be reshaped.newshape : int or tuple of ints    The new shape should be compatible with the original shape. If    an integer, then the result will be a 1-D array of that length.    One shape dimension can be -1. In this case, the value is inferred    from the length of the array and remaining dimensions.

Reshape is actually implemented in Series and will return an ndarray:

In [11]: aOut[11]: 0    11    22    33    4In [12]: a.reshape((2, 2))Out[12]: array([[1, 2],       [3, 4]])


you can directly use a.reshape((2,2)) to reshape a Series, but you can not reshape a pandas DataFrame directly, because there is no reshape function for pandas DataFrame, but you can do reshape on numpy ndarray:

  1. convert DataFrame to numpy ndarray
  2. do reshape
  3. convert back

e.g.

a = pd.DataFrame([[1,2,3],[4,5,6]])b = a.as_matrix().reshape(3,2)a = pd.DataFrame(b)