Reshape of pandas series?

前端 未结 5 1201
轮回少年
轮回少年 2020-12-17 10:32

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 l

相关标签:
5条回答
  • 2020-12-17 10:45

    Just use this below code:

    b=a.values.reshape(2,2)
    

    I think it will help you. u can directly use only reshape() function.but it will give future warning

    0 讨论(0)
  • 2020-12-17 10:54

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

    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 is actually implemented in Series and will return an 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]])
    
    0 讨论(0)
  • 2020-12-17 11:02

    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)
    
    0 讨论(0)
  • 2020-12-17 11:11

    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.

    0 讨论(0)
  • 2020-12-17 11:12

    for example we have a series. We can change it to dataframe like this way;

    a = pd.DataFrame(a)

    0 讨论(0)
提交回复
热议问题