【问题标题】:groupby and get entry with highest occurrence pandas [duplicate]groupby 并获得出现率最高的熊猫条目[重复]
【发布时间】:2022-01-23 11:47:52
【问题描述】:

我有一个数据框,其中包含具有不同产品类型的城市数据,例如:

city product_type
A B
A B
A D
A E
X B
X C
X C
X C

我想知道每个城市最常见的产品类型是什么。对于上面的df,城市A的产品B和城市X的产品C。

我试图通过首先分组然后遍历组并尝试找到出现次数最多的产品类型来解决这个问题,但它似乎不起作用:

d = df.groupby('city')['product_type']
prods=[]

for name,group in d:
    
    l = [group]
    
    prod = max(l, key=l.count)
    
    prods.append(prod)

print(prods)# this is list of products with highest occurrence in each city

这段代码似乎给了我所有的产品类型,而不仅仅是最常见的。

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    你可以试试这样的:

    data = pd.DataFrame({
        'city': ['A', 'A', 'A', 'A', 'X', 'X', 'X', 'X'],
        'product_type': ['B', 'B', 'D', 'E', 'B', 'C', 'C', 'C']
    })
    
    result_dict = {city: city_data.product_type.value_counts().index[0] 
        for city, city_data in data.groupby('city')}
    print(result_dict)
    

    这将产生字典:{'A': 'B', 'X': 'C'}。请注意,如果多个产品的出现次数相同,则此代码将仅返回其中之一。

    【讨论】:

    • 谢谢!在另一个问题中看到了类似的东西并实现了它。
    猜你喜欢
    • 2019-09-16
    • 2019-05-21
    • 1970-01-01
    • 2019-04-07
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2018-11-06
    相关资源
    最近更新 更多