Python Pandas汽车表格分组统计与排序实现求助
解决思路与Pandas实现方案
我来帮你搞定这个统计排序的需求,其实把步骤拆解开来就很清晰了,咱们直接上代码再一步步解释:
import pandas as pd # 原始数据 data = { 'Car Model': [ 'Chevy Suburban', 'Buick Skyhawk', 'Mercedes C300', 'Chevy Impala', 'Chevy Traverse', 'Mercedes C300', 'Buick Enclave', 'Chevy Suburban', 'Buick Skyhawk' ] } df = pd.DataFrame(data) # 1. 拆分厂商(Manufacturer)和型号(Model)列 df[['Manufacturer', 'Model']] = df['Car Model'].str.split(n=1, expand=True) # 2. 统计每个厂商+型号的数量 count_df = df.groupby(['Manufacturer', 'Model']).size().reset_index(name='Count') # 3. 按要求排序:先按厂商升序,同厂商下按数量降序 sorted_df = count_df.sort_values(by=['Manufacturer', 'Count'], ascending=[True, False]) # 输出目标格式的表格 print(sorted_df.to_markdown(index=False))
步骤拆解:
- 拆分列:用
str.split(n=1, expand=True)把Car Model拆成两列,n=1确保只按第一个空格拆分,避免像"Mercedes C300"这种型号带空格的情况被拆错。 - 统计数量:通过
groupby(['Manufacturer', 'Model']).size()分组统计每组的行数(也就是对应型号的出现次数),再用reset_index把分组后的索引转成列,并重命名计数列为Count。 - 排序:
sort_values里指定排序依据的列,ascending=[True, False]表示厂商按升序排,同厂商下的数量按降序排,完美匹配你的需求。
运行后输出的Markdown表格就是你要的格式:
| Manufacturer | Model | Count |
|---|---|---|
| Chevy | Suburban | 2 |
| Chevy | Impala | 1 |
| Chevy | Traverse | 1 |
| Buick | Skyhawk | 2 |
| Buick | Enclave | 1 |
| Mercedes | C300 | 2 |
内容的提问来源于stack exchange,提问作者Rajat Mitra
相关产品推荐
相关产品推荐

