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

标签 python pandas reshape series

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

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

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

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

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

(/image/WXw4b.jpg)

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

(/image/2iviA.jpg)

有人可以帮我解决这个问题吗?

最佳答案

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

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 单行:

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/

相关文章:

r - 使dcast中的drop参数仅查看公式的RHS

java - 如何在 ubuntu 20.04 上构建和安装 pylucene

python - 打印由随机数选择的变量

Python - 将命令作为参数

python - 为什么 df.to_pickle 和 native Python pickle 之间的 pd.DataFrame pickle 大小差异如此之大?

R - 对列表中的每个数据框执行融合

python - 用于保持正确的日期和时间值的正则表达式

Python - Pandas 索引

python - 如何有效地将值列表连接到间隔列表?

python - 融化 Pandas DataFrame