pandas - Pandas DataFrame 计算每个类别的元素
问题描述
考虑以下 Pandas 数据框,该数据框显示了不同品牌和型号年份的汽车销量:
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
推荐阅读
- selenium - 如何使用 Selenium 单击 inneHTML 字符串?
- jenkins - 如何在多分支声明性 Jenkins 管道中配置 SCM (gitHub) 检出重试?
- python - SWI Prolog 和 Python 之间的 2 路互操作/IPC
- javascript - sendBeacon JSON 数据未被读取(服务器端)Nodejs 和 JS
- python - 根据模式拆分字符串 [YYYY-MM-DD MM:HH:SS]
- java - 如何从 JSP 发送电子邮件?我有一个错误
- python - 与 BeautifulSoup 和标签作斗争
- python - Python:如何将一条线拟合到特定的数据区间?
- spring-boot - 如何在ProducerRecord中设置kafka message key
- vb.net - 如何使用 selenium webdriver 在 vb.net 中使用“动作”?