私にはpandas.Seriesのバグのように見えます。
a = pd.Series([1,2,3,4])
b = a.reshape(2,2)
b
bの型はSeriesですが、表示できません。最後のステートメントで例外が発生し、非常に長くなります。最後の行は「TypeError:%d形式:数値が必要です。numpy.ndarrayではありません」です。 b.shapeは(2,2)を返します。これは、そのシリーズタイプと矛盾します。おそらくpandas.Seriesはreshape関数を実装しておらず、np.arrayからバージョンを呼び出していると思いますか?誰かにもこのエラーが表示されますか?私はpandas 0.9.1にいます。
シリーズのvalues配列に対して reshape
を呼び出すことができます。
In [4]: a.values.reshape(2,2)
Out[4]:
array([[1, 2],
[3, 4]], dtype=int64)
シリーズにreshape
を適用することが常に意味があるとは限らないと思います(インデックスを無視しますか?)。
a.reshape?
Docstring: See numpy.ndarray.reshape
とはいえ、これを実行しようとするとバグのように見えるという事実に同意します。
Reshape関数は、新しい形状を複数の引数ではなくタプルとして受け取ります。
In [4]: 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は実際にはSeriesに実装されており、ndarrayを返します。
In [11]: a
Out[11]:
0 1
1 2
2 3
3 4
In [12]: a.reshape((2, 2))
Out[12]:
array([[1, 2],
[3, 4]])
a.reshape((2,2))
を直接使用してシリーズを再形成できますが、pandas DataFrameの再形成関数がないため、pandas DataFrameを直接再形成できませんが、再形成できますnumpy ndarray:
例えば.
a = pd.DataFrame([[1,2,3],[4,5,6]])
b = a.as_matrix().reshape(3,2)
a = pd.DataFrame(b)
以下のコードを使用してください:
b=a.values.reshape(2,2)
それはあなたを助けると思います。 uはreshape()関数のみを直接使用できますが、今後警告が表示されます