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,这更像是一个枢轴计数,只是你的列有两个级别