【问题标题】:Reshape DataFrame from rows to columns将 DataFrame 从行重塑为列
【发布时间】:2016-02-19 14:56:37
【问题描述】:

我有一个如下所示的 pandas 数据框:

id, value
1, a
2, b
3, c
.
.
1000, fsdf

我想把它转换成下面这样的东西

id1, value1, id2, value2, ...... id5, value5
1,    a,      2,       b,          5,      e
6    
.
.
995,  .  .........................1000,    fsdf

有没有办法用 pandas 做到这一点?

【问题讨论】:

    标签: python pandas dataframe reshape


    【解决方案1】:

    您可以将numpy.reshape 与shape 一起使用:

    print df
       id value
    0   1     a
    1   2     b
    2   3     c
    3   4     d
    4   5     e
    5   6     f
    6   7     g
    7   8     h
    8   9     i
    9  10     j
    
    print df.shape
    (10, 2)
    
    print df.values.reshape(df.shape[0] / 5, 10)
    [[1L 'a' 2L 'b' 3L 'c' 4L 'd' 5L 'e']
     [6L 'f' 7L 'g' 8L 'h' 9L 'i' 10L 'j']]
    
    #see http://stackoverflow.com/a/35511057/2901002
    cols = ['{}{}'.format(x, y) for y in range(1, 6) for x in df.columns]
    print cols
    ['id1', 'value1', 'id2', 'value2', 'id3', 'value3', 'id4', 'value4', 'id5', 'value5']
    
    df = pd.DataFrame(df.values.reshape(df.shape[0] / 5, 10), columns=cols)
    print df
      id1 value1 id2 value2 id3 value3 id4 value4 id5 value5
    0   1      a   2      b   3      c   4      d   5      e
    1   6      f   7      g   8      h   9      i  10      j
    

    【讨论】:

    • 它是如何工作的?如果有帮助,请不要忘记接受解决方案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多