【问题标题】:Getting matrix from data using pandas or python使用 pandas 或 python 从数据中获取矩阵
【发布时间】:2016-07-07 10:01:40
【问题描述】:

如何编写 pandas 或 python 代码来从我的数据中获取矩阵?我有下表:

Item    Route   Order
R124    A1  1
R124    A2  2
R124    A3  3
R124    A4  4
R124    A4  4
R126    A5  1
R126    A6  2
R126    A7  3
R126    A7  3

我需要的输出是:

    A1  A2  A3  A4  A5  A6  A7
R124    1   1   1   2   0   0   0
R126    0   0   0   0   1   1   2

要获取矩阵,唯一的“项目”值将成为行名称。例如,R124 在“Order”列中各有 1 个条目映射到“Route”列中的 A1、A2 和 A3,在“Route”列中有 2 个条目映射到 A4。相应地记录映射条目的数量。由于 R124 没有“订单”条目映射到 A5、A6 和 A7 的“路线”列,因此记录了零,如输出矩阵所示。

【问题讨论】:

    标签: python-2.7 pandas matrix


    【解决方案1】:

    您只需要pivot_table。

    如果你的数据框是 df:

    df.pivot_table(index="Item",columns="Route",values="Order",aggfunc='count')
    

    给予:

    Route   A1   A2   A3   A4   A5   A6   A7
    Item                                    
    R124   1.0  1.0  1.0  2.0  NaN  NaN  NaN
    R126   NaN  NaN  NaN  NaN  1.0  1.0  2.0
    

    要完全模仿您想要的答案,只需添加fillna 和astype:

    df.pivot_table(index="Item",columns="Route",values="Order",aggfunc='count').fillna(0).astype(int)
    

    给予

    Route  A1  A2  A3  A4  A5  A6  A7
    Item                             
    R124    1   1   1   2   0   0   0
    R126    0   0   0   0   1   1   2
    

    【讨论】:

    • 优秀!。正是我想要的。谢谢@tvashtar
    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2021-07-17
    • 1970-01-01
    • 2021-02-13
    • 2017-07-01
    • 2016-01-04
    相关资源
    最近更新 更多