【问题标题】:create customized transpose of data in python在 python 中创建自定义的数据转置
【发布时间】:2018-02-24 06:53:40
【问题描述】:

我有一个这样的数据框:

ID  Month   Price   Sale
sk1 1       100     6
sk1 2       120     7
sk1 3       130     8
sk2 1       50      3
sk2 2       60      4
sk2 3       70      5

期望的输出:

ID  1_Price 2_Price 3_Price 1_Sale  2_Sale  3_Sale
sk1 100     120     130     6       7       8
sk2 50      60      70      3       4       5

我尝试了带有 index 选项的 pandas transpose,但它没有给出预期的结果。

【问题讨论】:

    标签: python dataframe time-series transpose


    【解决方案1】:

    set_indexunstackpivot 一起使用,然后在list comprehension 的列中展平MultiIndex

    df = df.set_index(['ID','Month']).unstack()
    #alternative
    #df = df.pivot('ID','Month')
    df.columns = ['{0[1]}_{0[0]}'.format(x) for x in df.columns]
    #alternative
    #df.columns = df.columns.map('{0[1]}_{0[0]}'.format)
    print (df)
         1_Price  2_Price  3_Price  1_Sale  2_Sale  3_Sale
    ID                                                    
    sk1      100      120      130       6       7       8
    sk2       50       60       70       3       4       5
    

    最后reset_index + rename_axis:

    df = df.reset_index().rename_axis(None, axis=1)
    print (df)
        ID  1_Price  2_Price  3_Price  1_Sale  2_Sale  3_Sale
    0  sk1      100      120      130       6       7       8
    1  sk2       50       60       70       3       4       5
    

    【讨论】:

    • 谢谢,ID 似乎保留为索引。如何获得 ID 作为列之一?
    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 2020-02-18
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多