Pandas 每个类别的数据帧计数元素

Pandas 每个类别的数据帧计数元素,pandas,dataframe,pivot-table,Pandas,Dataframe,Pivot Table,考虑以下熊猫数据框,该数据框显示了不同品牌和车型年售出的汽车数量: df = pd.DataFrame({'Y17': [ 1, 2, 1, 1, 0, 0, 1, 2, 2, 0], 'Y18': [ 0, 0, 1, 1, 1, 0, 0, 0, 0, 1],

考虑以下熊猫数据框,该数据框显示了不同品牌和车型年售出的汽车数量:

df = pd.DataFrame({'Y17': [ 1,       2,       1,     1,       0,       0,     1,       2,       2,     0],
                   'Y18': [ 0,       0,       1,     1,       1,       0,     0,       0,       0,     1],
                   'Make': ['Ford',  'Jeep',  'BMW', 'BMW',   'Mazda', 'Jeep', 'Chevy', 'BMW',  'Mazda','Ford']})

Make    Y17 Y18
Ford    1   0
Jeep    2   0
BMW     1   1
BMW     1   1
Mazda   0   1
Jeep    0   0
Chevy   1   0
BMW     2   0
Mazda   2   0
Ford    0   1
每一行都属于特定商店的销售额(未记录)

我希望以此数据框架为轴心,以获得条目数,例如索引为“make”,列为“year”和“number of sales”(多级列很好)的组合。输出应如下所示:

           Y17            Y18
        0   1   2      0   1   2
Make            
BMW     0   2   1      1   2   0
Chevy   0   1   0      1   0   0
Ford    1   1   0      1   1   0
Jeep    1   0   1      2   0   0
Mazda   1   0   1      1   1   0

melt
然后
crosstab

s=df.melt('Make')
pd.crosstab(s.Make,[s.variable,s.value]).stack().fillna(0).unstack()
variable Y17        Y18          
value      0  1  2    0    1    2
Make                             
BMW        0  2  1  1.0  2.0  0.0
Chevy      0  1  0  1.0  0.0  0.0
Ford       1  1  0  1.0  1.0  0.0
Jeep       1  0  1  2.0  0.0  0.0
Mazda      1  0  1  1.0  1.0  0.0

要复制的代码和输入是不同的?哎呀,修复了。抱歉!df.melt(['Make',Count'])pivot_table(index='Make',columns=['variable',Count'],value='value',fill_value=0)对你有用吗?什么是
Count
?抱歉,忘了在中添加。Count创建为
df['Count']=df.groupby('Make')。cumcount()
太好了,你能解释一下这些步骤吗?这样我就可以了解下一次是怎么做的了。@Ali首先将你的df融化,然后你只需要用值和年份来计算make,这更像是一个枢轴计数,只是你的列有两个级别