groupby 并获得出现率最高的熊猫条目[重复]

Posted

技术标签:

【中文标题】groupby 并获得出现率最高的熊猫条目[重复]【英文标题】:groupby and get entry with highest occurrence pandas [duplicate] 【发布时间】: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

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

【问题讨论】:

【参考方案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'。请注意,如果多个产品的出现次数相同,则此代码将仅返回其中之一。

【讨论】:

谢谢!在另一个问题中看到了类似的东西并实现了它。

以上是关于groupby 并获得出现率最高的熊猫条目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用熊猫查找重复名称?

熊猫:groupby后如何获得特定的组? [复制]

熊猫:来自 groupby.value_counts() 的字典

如何在熊猫中获得 False 的计数 [重复]

熊猫:Groupby,循环并添加一小时迭代与组内的条件

熊猫:在 groupby 'date' 中删除重复项