gpt4 book ai didi

python - 如何获得 pandas 组中最受欢迎的项目?

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:05 27 4
gpt4 key购买 nike

我有一个包含待售汽车的 Pandas Dataframe,我想为每个品牌获取最受欢迎的汽车,但我似乎无法做到这一点。

我有一个包含一些列(例如:车辆类型、价格、里程、年份、品牌、型号等)的 pandas 数据框,对于每个汽车品牌,我想检查哪种型号出现次数最多。我试过使用 groupby,如下所示:

popular_models = dataset.groupby('brand').model.value_counts().groupby(level=0).nlargest(1)

但它返回一个 Pandas 系列,其中一些我想要的数据存储在索引中,它还添加了一个对我来说没有任何意义的重复列。

我想要一个包含 3 列的 DataFrame,如下所示:

( https://imgur.com/a/BkKBrv9 )

但是,我得到了一个像这样的 pandas 系列:

( https://imgur.com/a/u8CSXY4 )

谁能帮我解决这个问题?

最佳答案

您必须对要保留的两个对象进行分组,然后计算要查找其出现次数的对象。这是示例输入文件:

Brand   Model
Acura RDX
Acura RDX
Acura RDX
Acura RDX
Acura RDX
Acura RDX
Acura RDX
Acura RDX
Acura RDX
Acura RDX
Beach Baby
Beach Baby
Beach Baby
Beach Baby
Beach Baby
Beach Baby
Beach Baby
Beach Baby
Beach Baby
Beach Baby
BMW 320i
BMW 320i
BMW 320i
BMW 320i
BMW 320i
BMW 320i
BMW 320i
BMW 550i
BMW 550i
BMW 550i
BMW 550i
BMW 550i
BMW 550i
BMW 550i
Cadillac Escalade
Cadillac Escalade
Cadillac Escalade
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo
Chana Cargo

简单的 pandas one liner:

df = pd.read_table('fun.txt', header=0)
print(df.groupby(['Brand','Model'])['Model'].agg(['count']))

输出:

                   count
Brand Model
Acura RDX 10
BMW 320i 7
550i 7
Beach Baby 10
Cadillac Escalade 3
Chana Cargo 12

如果您想按频率(从大到小)对值进行排序并仅保留最大的,请将单行更改为:

groupby_df = (df.groupby(['Brand','Model'])['Model'].agg(['count']).sort_values(by='count', ascending=False).reset_index().drop_duplicates('Brand', keep='first'))

得到:

      Brand     Model  count
0 Chana Cargo 12
1 Acura RDX 10
2 Beach Baby 10
3 BMW 320i 7
5 Cadillac Escalade 3

关于python - 如何获得 pandas 组中最受欢迎的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54204653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com