代码之家  ›  专栏  ›  技术社区  ›  Jonathan

基于自定义层次结构的熊猫数据帧排序与提取

  •  0
  • Jonathan  · 技术社区  · 4 年前

    import pandas as pd
    df = pd.DataFrame({
        'brand': ['Yum_Yum', 'Yum_Yum', 'Indomie', 'Indomie', 'Indomie', 'Boom_Boom', 'Boom_Boom'],
        'style': ['cup', 'box', 'cup', 'pack', 'pack', 'pack', 'pack'],
        'rating': [4, 4, 3.5, 15, 5, 2.3, 0]
    })
    

    我把等级定义为 #hierarchy --> 1 = pack, 2 = cup, 3= box 其中pack是最高优先级,box是最低优先级。我只想在brand列中保留每个唯一值的一个实例。基于我的层次结构,此实例应该具有最高优先级值。如果有平局,则可以随机拆分。

    因此,生成的数据帧如下所示:

    brand   style   rating
    Yum_Yum cup 4.0
    Indomie pack    5.0
    Boom_Boom   box 2.3
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   Quang Hoang    4 年前

    尝试将样式映射到优先级、排序和删除重复项:

    priority = {'cup':2, 'box':3, 'pack':1}
    df['style_rank'] = df['style'].map(priority)
    df.sort_values('style_rank').drop_duplicates('brand')
    

           brand style  rating  style_rank
    3    Indomie  pack    15.0           1
    5  Boom_Boom  pack     2.3           1
    0    Yum_Yum   cup     4.0           2