代码之家  ›  专栏  ›  技术社区  ›  Khalil Al Hooti

熊猫groupby不维护秩序?

  •  1
  • Khalil Al Hooti  · 技术社区  · 6 年前

    我有以下熊猫数据集

    import pandas as pd
    
    seq = [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2]
    event_no = [5, 5, 5, 6, 6, 6, 4, 4, 4, 3, 3, 3, 1, 1, 1, 2, 2, 2]
    points_no = [1, 1, 1, None, None, None, 1, 1, 1, 1, 1, 1, None, None, None, 1, 1, 1]
    
    df = pd.DataFrame({"seq" : seq, "event_no": event_no, "points_no": points_no})
    

    出[]

    seq event_no    points_no
        0   1   5   1.0
        1   1   5   1.0
        2   1   5   1.0
        3   1   6   NaN
        4   1   6   NaN
        5   1   6   NaN
        6   1   4   1.0
        7   1   4   1.0
        8   1   4   1.0
        9   2   3   1.0
        10  2   3   1.0
        11  2   3   1.0
        12  2   1   NaN
        13  2   1   NaN
        14  2   1   NaN
        15  2   2   1.0
        16  2   2   1.0
        17  2   2   1.0
    

    我把它们按顺序分组,然后是事件编号,再加上点数

    df2 = df.groupby(['seq', 'event_no']).points_no.sum().reset_index()
    

    输出[]:输出如下所示。它不保留列event_no中数据的原始索引顺序,而是按升序排序。

    seq event_no    points_no
    0   1   4   3.0
    1   1   5   3.0
    2   1   6   0.0
    3   2   1   0.0
    4   2   2   3.0
    5   2   3   3.0
    

          seq   event_no    points_no
        0   1   5   3.0
        1   1   6   0.0
        2   1   4   3.0
        3   2   3   3.0
        4   2   1   0.0
        5   2   2   3.0
    

    有没有一种方法可以在保持订单的同时得到所述的结果。

    0 回复  |  直到 6 年前