You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame中统计各车型颜色总数并添加至对应行?

Pandas 数据统计与列生成解决方案

针对你的两个pandas数据处理问题,我来给出具体的实现方法:

问题1:统计DataFrame中某列唯一值的对应数量

如果想要统计某一列中每个唯一值出现的次数,有两种简单高效的方法:

  • 方法1:直接使用value_counts()
    这个方法会直接返回一个Series,索引是列中的唯一值,值为对应出现的次数,非常适合快速统计:
    import pandas as pd
    
    # 假设你的DataFrame是df,目标列为"车型"
    unique_counts = df["车型"].value_counts()
    print(unique_counts)
    
  • 方法2:groupby() + count()
    这种方法更灵活,适合需要将结果整理成DataFrame格式,或者关联其他列统计的场景:
    # 按"车型"分组,统计每个组的ID数量,并重置索引得到结构化的DataFrame
    count_result = df.groupby("车型")["ID"].count().reset_index(name="数量")
    print(count_result)
    

问题2:为DataFrame添加Total列,显示对应车型的颜色总数

针对你提供的示例数据,我们可以利用groupby()结合transform()来实现需求——transform会将分组统计的结果广播到每一行,完美匹配你想要的输出格式:

第一步:构造示例DataFrame

先把你给出的表格数据转换成pandas DataFrame:

data = {
    "车型": ["VW", "VW", "VW", "AUDI", "AUDI", "AUDI"],
    "颜色": ["蓝色", "红色", "黑色", "银色", "黑色", "白色"],
    "ID": [123, 567, 779, 112, 356, 224]
}
df = pd.DataFrame(data)

第二步:添加Total列

# 按"车型"分组,统计每个组内颜色的数量,并用transform将结果映射到每一行
df["Total"] = df.groupby("车型")["颜色"].transform("count")
# 查看结果
print(df)

运行后得到的结果如下:

车型颜色IDTotal
VW蓝色1233
VW红色5673
VW黑色7793
AUDI银色1123
AUDI黑色3563
AUDI白色2243

这里的核心逻辑是:groupby("车型")将数据按车型分成独立的组,["颜色"].transform("count")计算每个组内颜色条目的数量,然后把这个数值填充到该组的每一行中,这样每行都能显示对应车型的颜色总数。

内容的提问来源于stack exchange,提问作者edgar lenin lizarraga gastelum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:47:53