如何在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)
运行后得到的结果如下:
| 车型 | 颜色 | ID | Total |
|---|---|---|---|
| VW | 蓝色 | 123 | 3 |
| VW | 红色 | 567 | 3 |
| VW | 黑色 | 779 | 3 |
| AUDI | 银色 | 112 | 3 |
| AUDI | 黑色 | 356 | 3 |
| AUDI | 白色 | 224 | 3 |
这里的核心逻辑是:groupby("车型")将数据按车型分成独立的组,["颜色"].transform("count")计算每个组内颜色条目的数量,然后把这个数值填充到该组的每一行中,这样每行都能显示对应车型的颜色总数。
内容的提问来源于stack exchange,提问作者edgar lenin lizarraga gastelum
相关产品推荐
相关产品推荐

