【问题标题】:Sort column for each index for multi-index data frame多索引数据框的每个索引的排序列
【发布时间】:2019-07-21 06:17:58
【问题描述】:

我有一个具有多级索引的数据框。这是它的一个sn-p:

import pandas as pd

data = {'EVENT_ID': [112335580,112335580,112335580,112335580,112335580,112335580,112335580,112335580, 112335582,
                     112335582,112335582,112335582,112335582,112335582,112335582,112335582,112335582,112335582,
                     112335582,112335582,112335582],

 'SELECTION_ID': [6356576,2554439,2503211,6297034,4233251,2522967,5284417,7660920,8112876,7546023,8175276,8145908,
                  8175274,7300754,8065540,8175275,8106158,8086265,2291406,8065533,8125015],

 'BSP': [5.080818565,6.651493872,6.374683435,24.69510797,7.776082305,11.73219964,270.0383021,4,8.294425408,335.3223613,
         14.06040142,2.423340019,126.7205863,70.53780982,21.3328554,225.2711962,92.25113066,193.0151362,3.775394142,
         95.3786641,17.86333041],

  'WIN_LOSE':[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0]}

df = pd.DataFrame(data, columns=['EVENT_ID', 'SELECTION_ID', 'BSP','WIN_LOSE'])
df

df.set_index(['EVENT_ID', 'SELECTION_ID'], inplace=True)
df.sortlevel(level=0, ascending=True, sort_remaining=True)

我想分别对每个 EVENT_ID 索引的 BSP 列进行排序。

我尝试了以下方法:

data.assign(BSP=data.groupby(level=0).rank(ascending=False))

这不起作用,因为它弄乱了索引并且似乎无论如何都没有对列进行排序。

我也尝试过仅根据列进行排序,但这显然也只是弄乱了索引。

【问题讨论】:

    标签: python pandas multi-index


    【解决方案1】:

    这按每个事件 ID 的 BSP 升序排序:

    df = pd.DataFrame(data, columns=['EVENT_ID', 'SELECTION_ID', 'BSP','WIN_LOSE'])
    df = df.sort_values(["EVENT_ID","BSP"])
    df.set_index(['EVENT_ID', 'SELECTION_ID'], inplace=True)
    

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 2022-11-25
      • 2019-10-24
      • 2019-12-20
      • 2020-06-21
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多