python - 按组获取所有行、选定行和熊猫总数的百分比
问题描述
假设我有一个名为 mydf 的 pandas 数据框。IE,
import pandas as pd
mydf = pd.DataFrame({
'type':['A','A','A', 'B','B','B', 'C'],
'state':['NY','CA','NY', 'NY','CA','CA', 'WY'],
'date':['2018-01-02','2018-01-04','2018-02-06',
'2018-01-01','2018-01-24','2018-02-10','2018-01-24']
})
Out[28]:
date state type
0 2018-01-02 NY A
1 2018-01-04 CA A
2 2018-02-06 NY A
3 2018-01-01 NY B
4 2018-01-24 CA B
5 2018-02-10 CA B
6 2018-01-24 WY C
我想要一个表格,用于计算 A 类型的所有记录、所有记录(A、B、C 类型)的每个州和日期(仅年月而不是每天日期)的记录总数,然后是 A 的百分比每组内计入总数。
即,最终输出将是另一个具有以下列和值的 pandas 数据框:
date_ym state total_count total_type_A percentage
20181 CA 2 1 50
20181 NY 2 1 50
20181 WY 1 0 0
20182 CA 1 0 0
20182 NY 1 1 50
我可以创建两个表,然后合并它们然后计数,但我正在寻找一个更简单的单行代码......
解决方案
第一次转换日期为月份:
mydf["date"] = mydf["date"].dt.strftime("%Y%m")
然后使用groupby.agg
:
def total_type_A(x):
return sum(x == "A")
def percentage(x):
return sum(x == "A") / len(x)
mydf.groupby(["date", "state"]).agg([len, total_type_A, percentage])
推荐阅读
- aws-sdk-js - AWS js sdk - 是强制性的凭证
- linux - 查找不在 .git 目录中的大文件
- c++ - 如何定义依赖于参数包转换的函数的返回类型?
- spring - @Autowired 在 springboot 应用程序中不起作用
- postgresql - 如何小写postgresql数组?
- c# - ASP .NET CORE 2.0 - 无法在 Debian 上启动服务
- android - 远程获取领域数据库 Android
- gcloud - 谷歌云ml语音-异步操作丢失id
- c# - 搜索和替换文本,如记事本
- python - 没有访问权限/尝试过“chmod u+x”/.command/ 文件有点打开,但没有集会/Hairline 将不胜感激