python - 如何获取列值的频率计数,按另一列中的分类值排序
问题描述
我有一个熊猫数据框,其中包括两列,船只名称和延迟指示器。船只名称是船只的字符串名称,延迟指示符是 0 或 1(布尔值)。
我的数据框:
df = pd.DataFrame({
"Vessel.Name": ["Spirit of British Columbia", "Queen of New Westminster", "Spirit of Vancouver Island", "Coastal Celebration", "Spirit of British Columbia"],
"Delay.Indicator":[0, 0, 0, 1, 0]
})
它的外观:
Vessel.Name Delay.Indicator
Spirit of British Columbia 0
Queen of New Westminster 0
Spirit of Vancouver Island 0
Coastal Celebration 1
Spirit of British Columbia 0
我的目标是获得一个 DataFrame,其中包含每个不同的船名,以及两个新列,指示其计数,以及延迟指示器中“1”的总数,用于每个不同的船名。不确定是否有 Pandas 方法,或者我是否应该遍历 python 列表?
解决方案
应用聚合函数的简单 groupby 应该可以解决问题:
df.groupby("Vessel.Name")["Delay.Indicator"].agg(['count', sum])
输出:
count sum
Vessel.Name
Coastal Celebration 1 1
Queen of New Westminster 1 0
Spirit of British Columbia 2 0
Spirit of Vancouver Island 1 0
推荐阅读
- vb.net - 将图像分配给其下的图片框时,标签消失
- python - SELECT FOR UPDATE 会导致死锁吗?
- wordpress - 安装itheme安全插件后,无法在wordpress中进入管理页面本身
- r - 使用 ggplot 手动指定用于绘图的切割点或 bin
- python - Ctrl + c、Ctrl + z 在 PyCharm 中不起作用
- android-studio - Flutter Web 问题:在 Firebase 存储上上传
- microsoft-graph-api - 从 Azure AD 组 ID 获取访问包
- json - 将多个 JSON 对象连接到一个数组中
- haskell - 使用 Cabal 而不是使用 diff 和 make 的简单单元测试
- c# - C#活动目录——如果域控制器宕机了怎么办?