It looks to me like a bug in pandas.Series.
a = pd.Series([1,2,3,4]) b = a.reshape(2,2) b
b has type Series but can not be displayed, the last statement gives exception, very lengthy, the last line is "TypeError: %d format: a number is required, not numpy.ndarray". b.shape returns (2,2), which contradicts its type Series. I am guessing perhaps pandas.Series does not implement reshape function and I am calling the version from np.array? Anyone see this error as well? I am at pandas 0.9.1.
You can call
reshape on the values array of the Series:
In : a.values.reshape(2,2) Out: 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:
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 : a.reshape? Type: function String Form:<function reshape at 0x1023d2578> File: /Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/numpy/core/fromnumeric.py Definition: 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 : a Out: 0 1 1 2 2 3 3 4 In : a.reshape((2, 2)) Out: array([[1, 2], [3, 4]])