python - Pandas groupby - 每组单独计算唯一的列
问题描述
我正在尝试做一个 groupby 在一列中我有字符串分类数据:
ID cat_1 cat_2
11 'OG' 'ASD'
11 'LOL' 'ASD'
11 'OG' 'DFG'
22 'LOL' 'DFG'
22 'OG' 'DFG'
我正在尝试按 ID 进行分组,并将字符串数据聚合成一个数字特征,即每个类别的出现次数。所以结果将是:
ID OG LOL ASD DFG
11 2 1 2 1
22 1 1 0 2
我怎样才能在熊猫中实现这一点?谢谢!
解决方案
您可以堆叠/value_counts/unstack:
(df.set_index('ID')
.stack()
.groupby('ID')
.value_counts()
.unstack(fill_value=0)
)
注意。.reset_index()
如果您想要所有列,您可以添加
输出:
ASD DFG LOL OG
ID
11 2 1 1 2
22 0 2 1 1
推荐阅读
- python - Python3.8 Import Error No module name tqdm found
- python - Python-Selenium:如何抓取表格中的一些特定元素并将其从小数转换为小数
- r - 如何计算数据组合的出现次数并保存在R中的矩阵中?
- c# - 找到发射弹丸的角度以到达特定点
- java - Apache POI java.lang.NoClassDefFoundError 读取 excel 文件
- go - 如何使用 Golang Link A Contaxt Form 发送电子邮件
- javascript - 改变方向并在数组中移动元素
- sql-server - 查询失败 --- select count(*) with order by got sqlserver error 8127
- vega-lite - 使用选择时如何动态更改标题?
- azure - 具有多个后端的 Azure API 管理