首页 文章

如何根据大熊猫中最高出现的组合填写值?

提问于
浏览
2

我有一个巨大的df看起来像这样 -

...   ||    City     ||  Country
           Newyork        USA
           Newyork        USA
           Newyork        USA
           Newyork        **unknown**
           delhi          india
           delhi          **unknown**
           delhi          india

现在,我想根据已经匹配的城市填写正确国家的未知数 . 例如,大多数具有newyork的行在country列中都是USA .

我的想法是按国家分组并将其转换成字典来映射,但那种失败 .

这是一个类比问题,但解决方案是在R:基于发生概率填充缺失值

2 回答

  • 2

    您可以将value_counts与第一个索引或第一个值mode一起使用 replace

    def f(x):
        #remove '**unknown**' rows and get top1 value
        return x.replace('**unknown**', x[x.ne('**unknown**')].value_counts().index[0])
        #return x.replace('**unknown**', x[x.ne('**unknown**')].mode().iat[0])
    
    df['Country'] = df.groupby('City')['Country'].apply(f)
    print (df)
          City Country
    0  Newyork     USA
    1  Newyork     USA
    2  Newyork     USA
    3  Newyork     USA
    4    delhi   india
    5    delhi   india
    6    delhi   india
    

    另一个解决方案是将 **unknown** 替换为缺失值,获取最高值和fillna

    df['Country'] = df['Country'].replace('**unknown**', np.nan)
    
    s = df.groupby('City')['Country'].transform(lambda x: x.value_counts().index[0])
    #alternative
    #s = df.groupby('City')['Country'].transform(lambda x: x.mode().iat[0])
    df['Country'] = df['Country'].fillna(s)
    print (df)
          City Country
    0  Newyork     USA
    1  Newyork     USA
    2  Newyork     USA
    3  Newyork     USA
    4    delhi   india
    5    delhi   india
    6    delhi   india
    
  • 2

    一个简单的解决方案,使用 collections.Counter 根据 groupby('City')'**unknown**' 字段查找最常见的 Country .

    from collections import Counter
    def MC(a):
        return a.replace('**unknown**', Counter(a).most_common()[0][0])
    
    df.Country = df.groupby('City').Country.apply(MC)
    print(df)
    
    #      City Country
    # 0  Newyork     USA
    # 1  Newyork     USA
    # 2  Newyork     USA
    # 3  Newyork     USA
    # 4    delhi   india
    # 5    delhi   india
    # 6    delhi   india
    

相关问题