Pandas如何根据行Name值生成带0/1标记的分类新列
Pandas实现按id聚合的Name列0/1特征编码
你可以通过pandas快速实现该需求,以下是两种可直接运行的方案:
- 方案1:独热编码+分组聚合(最简便)
核心逻辑是先将Name列转为独热编码,再按id分组求和,同一个id下出现过的类别对应列结果为1,未出现为0。
import pandas as pd # 构造示例DataFrame,你可以替换为自己的数据源 df = pd.DataFrame({ 'id': [100, 200, 100], 'Name': ['Apple', 'Orange', 'Banana'] }) # 核心实现代码 result = pd.get_dummies(df, columns=['Name'], prefix='Name', dtype=int)\ .groupby('id', as_index=False)\ .sum() # 打印查看结果 print(result)
运行输出和你预期的结构完全一致。
- 方案2:透视表实现
直接用透视表完成行列转换,自动补全缺失值为0:
result = df.pivot_table( index='id', columns='Name', aggfunc=lambda x: 1, fill_value=0 ).add_prefix('Name_').reset_index()
内容的提问来源于stack exchange,提问作者Tahsin Alam
相关产品推荐
相关产品推荐

