代码之家  ›  专栏  ›  技术社区  ›  U13-Forward

如何扩展数据帧-熊猫

  •  3
  • U13-Forward  · 技术社区  · 6 年前

    基本上我只想变平(也许不是好条件)

        A      B            C
    0   1  [1,2]      [1, 10]
    1   2  [2, 14]    [2, 18]
    

    我想得到输出:

        A  B1   B2    B3   B4
    0   1  1    2     1    10
    1   2  2    14    2    18
    

    我试过:

    print(pd.DataFrame(df.values.flatten().tolist(), columns=['%sG'%i for i in range(6)], index=df.index))
    

    但没什么好的。

    1 回复  |  直到 6 年前
        1
  •  7
  •   jezrael    6 年前

    如果列表长度不同,一般解决方案也适用:

    df1 = pd.DataFrame(df['B'].values.tolist())
    df2 = pd.DataFrame(df['C'].values.tolist())
    
    df = pd.concat([df[['A']], df1, df2], axis=1)
    df.columns = [df.columns[0]] + [f'B{i+1}' for i in range(len(df.columns)-1)]
    print (df)
       A  B1  B2  B3  B4
    0  1   1   2   1  10
    1  2   2  14   2  18
    

    如果尺寸相同:

    df1 = pd.DataFrame(np.array(df[['B','C']].values.tolist()).reshape(len(df),-1))
    df1.columns = [f'B{i+1}' for i in range(len(df1.columns))]
    df1.insert(0, 'A', df['A'])
    print (df1)
       A  B1  B2  B3  B4
    0  1   1   2   1  10
    1  2   2  14   2  18