【问题标题】:moving from one column in a dataframe in pandas to many or many columns to one从熊猫数据框中的一列移动到多列或多列到一列
【发布时间】:2016-10-18 08:17:17
【问题描述】:

我有一个包含 20 个项目的 pandas 数据框,我想将其重塑为 5 列乘 4 行。

熊猫数据框可以做到这一点吗?然后是否可以反过来将生成的 5*4 数据帧转换为 2*10 或 1*20?

【问题讨论】:

    标签: pandas dataframe transform


    【解决方案1】:

    我认为您可以先使用values 转换为numpy array,然后再使用numpy.ndarray.reshape

    df = pd.DataFrame({'A':[1,2,3,7,7],
                       'B':[4,5,6,8,0],
                       'C':[7,8,9,7,8],
                       'D':[1,3,5,8,1]})
    
    print (df)
       A  B  C  D
    0  1  4  7  1
    1  2  5  8  3
    2  3  6  9  5
    3  7  8  7  8
    4  7  0  8  1
    
    df = pd.DataFrame(df.values.reshape(4,5),columns=list('ABCDE'))
    print (df)
       A  B  C  D  E
    0  1  4  7  1  2
    1  5  8  3  3  6
    2  9  5  7  8  7
    3  8  7  0  8  1
    

    print (df.values.reshape(10,2))
    [[1 4]
     [7 1]
     [2 5]
     [8 3]
     [3 6]
     [9 5]
     [7 8]
     [7 8]
     [7 0]
     [8 1]]
    
    print (pd.DataFrame(df.values.reshape(10,2), columns=list('AB')))
       A  B
    0  1  4
    1  7  1
    2  2  5
    3  8  3
    4  3  6
    5  9  5
    6  7  8
    7  7  8
    8  7  0
    9  8  1
    

    通过评论编辑:

    pos = [1,5,7,8,10,8]
    
    print (pd.DataFrame(np.array(pos).reshape(2,3),columns=list('ABC')))
       A   B  C
    0  1   5  7
    1  8  10  8
    

    【讨论】:

    • 如果您将列表之类的内容传递到数据框中,您可以同时对其进行整形吗?例如,如果 pos 是我的列表,我会收到以下错误: pd.DataFrame(pos).reshape(4,5),columns=list('ABCDE'))
    • 我认为您需要将list 转换为pd.DataFrame(np.array(pos).reshape(4,5),columns=list('ABCDE')) 的numpy 数组
    猜你喜欢
    • 2022-08-02
    • 2022-11-15
    • 1970-01-01
    • 2023-01-14
    • 2021-03-06
    • 1970-01-01
    • 2017-05-23
    • 2018-09-29
    • 2019-03-08
    相关资源
    最近更新 更多