首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单独列上的每个类别计数- Panda Python

单独列上的每个类别计数- Panda Python
EN

Stack Overflow用户
提问于 2021-11-26 17:40:42
回答 3查看 48关注 0票数 1

我有一个熊猫数据栏,有3列:

代码语言:javascript
复制
Brand     Model          car_age

PEUGEOT   207            4. 6-8
BMW       3ER REIHE      2. 1-2
FIAT      FIAT DOBLO     3. 3-5
PEUGEOT   207            1. 0
BMW       3ER REIHE      2. 1-2
PEUGEOT   308            2. 1-2
BMW       520D           2. 1-2
...       ...            ...

我想按品牌Model分组,计算每个car_age类别的计数:

代码语言:javascript
复制
Brand    Model      "1. 0" "2. 1-2" "3. 3-5" "4. 6-8"

PEUGEOT  207         1        0        0        1
PEUGEOT  308         0        1        0        0
BMW      3ER REIHE   0        2        0        0
BMW      520D        0        1        0        0
FIAT     FIAT DOBLO  0        0        1        0

PS:1. 0指的是与零车龄相对应的第一类。2. 1-2指的是与1-2岁之间的汽车年龄相对应的第二类.我枚举我的类别,以便它们以正确的顺序出现。

我试过了:

代码语言:javascript
复制
output_count = pd.DataFrame({'Count':df.groupby('Brand','Model','car_age').size()})

但它忽略了一个错误:

ValueError:对象类型的无轴命名模型

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

我想我提供了足够的信息,但如果我能提供更多的信息,请告诉我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-11-26 18:22:40

使用pd.crosstab

代码语言:javascript
复制
pd.crosstab([df['Brand'], df['Model']], df['car_age']).reset_index()

输出:

代码语言:javascript
复制
car_age    Brand       Model  1. 0  2. 1-2  3. 3-5  4. 6-8
0            BMW   3ER REIHE     0       2       0       0
1            BMW        520D     0       1       0       0
2           FIAT  FIAT DOBLO     0       0       1       0
3        PEUGEOT         207     1       0       0       1
4        PEUGEOT         308     0       1       0       0
票数 1
EN

Stack Overflow用户

发布于 2021-11-26 17:52:59

用多列对数据帧进行分组的正确方法是在列名称周围使用方括号。

代码语言:javascript
复制
df.groupby(['Brand','Model','car_age'])

我希望它能帮助你解决你的问题。

票数 0
EN

Stack Overflow用户

发布于 2021-11-26 19:15:44

这是一个你可以调用的函数。如果你想看看它是如何运作的

代码语言:javascript
复制
def group_by(df):
    data_dumm = pd.get_dummies(df['car_age'])
    data =df.drop(columns='car_age')
    X= pd.concat([data,data_dumm], axis=1).groupby(['Brand','Model']).sum()
    return X.reset_index()
group_by(df) 

产出:

代码语言:javascript
复制
    Brand   Model       1. 0    2. 1-2  3. 3-5  4. 6-8
0   BMW     3ER REIHE   0       2       0       0
1   BMW     520D        0       1       0       0
2   FIAT    FIAT DOBLO  0       0       1       0
3   PEUGEOT 207         1       0       0       1
4   PEUGEOT 308         0       1       0       0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70128214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档