【问题标题】:How to expand one column in Pandas to many columns?如何将 Pandas 中的一列扩展到多列?
【发布时间】:2017-08-12 17:17:39
【问题描述】:

作为标题,我在 pandas 中有一列(系列),每一行都是一个类似[0,1,2,3,4,5] 的列表。每个列表有 6 个数字。我想把这列改成6列,比如[0,1,2,3,4,5]会变成6列,0是第一列,1是第二列,2是第三列,以此类推。我怎样才能做到?

【问题讨论】:

    标签: python pandas scikit-learn bigdata


    【解决方案1】:

    没有@jezrael 的解决方案那么快。但优雅:-)

    applypd.Series

    df.a.apply(pd.Series)
    
       0  1  2  3  4  5
    0  0  1  2  3  4  5
    1  0  1  2  3  4  5
    

    df.a.apply(pd.Series, index=list('abcdef'))
    
       a  b  c  d  e  f
    0  0  1  2  3  4  5
    1  0  1  2  3  4  5
    

    【讨论】:

    • 大数据——它会很慢;)
    • @jezrael 会的
    【解决方案2】:

    如果我正确理解了您的问题,您正在寻找转置操作。

    df = pd.DataFrame([1,2,3,4,5],columns='a')
    # .T stands for transpose
    print(df.T)
    

    【讨论】:

    • 但是我有 1000 行,我想将所有行中的每一行转换为 6 个单独的列..
    【解决方案3】:

    您可以通过values 将列表转换为numpy array,然后使用DataFrame 构造函数:

    df = pd.DataFrame({'a':[[0,1,2,3,4,5],[0,1,2,3,4,5]]})
    print (df)
                        a
    0  [0, 1, 2, 3, 4, 5]
    1  [0, 1, 2, 3, 4, 5]
    
    df1 = pd.DataFrame(df['a'].values.tolist())
    print (df1)
       0  1  2  3  4  5
    0  0  1  2  3  4  5
    1  0  1  2  3  4  5
    

    cols = list('abcdef')
    df1 = pd.DataFrame(df['a'].values.tolist(), columns=cols)
    print (df1)
       a  b  c  d  e  f
    0  0  1  2  3  4  5
    1  0  1  2  3  4  5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2020-03-30
      • 1970-01-01
      相关资源
      最近更新 更多