You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整pd.get_dummies输出实现按ID聚合并标记对应类型为1

解决方法

你可以在独热编码执行完成后,按ID字段分组,对所有生成的type类列取最大值即可。逻辑很简单:只要该ID下对应类型出现过至少1次,最大值就为1,没出现过就是0,刚好匹配你的需求。完整代码如下:

import pandas as pd

# 原始数据构造
df = pd.DataFrame({
    'ID': ['AA23', 'AB24', 'DJ44', 'KD33', 'KD33', 'BK89', 'BL92', 'BL92', 'IO89'],
    'type': ['A', 'B', 'B', 'C', 'A', 'B', 'B', 'C', 'A']
})

# 一步完成编码+聚合
result = pd.get_dummies(df, columns=['type'], prefix='type')\
         .groupby('ID', as_index=False)\
         .max()

执行后输出的result就是你需要的预期结果。

可选的一步式写法

你也可以直接用交叉表实现,无需先做独热编码再聚合:

result = pd.crosstab(df['ID'], df['type'])\
         .clip(upper=1)\
         .reset_index()\
         .rename_axis(columns=None)\
         .add_prefix('type_')\
         .rename(columns={'type_ID': 'ID'})

内容的提问来源于stack exchange,提问作者dmd7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:15:03