如何合并pandas DataFrame中同类字符串以规避虚拟变量陷阱
实现方案
1. map方法实现
预先定义完整的类别映射规则,适合映射关系固定、需要统一管控类别的场景:
# 定义所有取值的对应关系 fruit_mapper = { "redapple": "apple", "greenapple": "apple", "orange": "orange", "pear": "pear", "grape": "grape" } df["fruit"] = df["fruit"].map(fruit_mapper)
2. lambda实现
仅针对需要合并的类别做判断,不需要枚举所有取值,适合规则简单的场景:
df["fruit"] = df["fruit"].apply(lambda x: "apple" if x in ("redapple", "greenapple") else x)
3. 更优推荐方案:replace批量替换
不需要写全所有类别映射,直接指定需要替换的取值即可,代码更简洁,扩展性更强:
df["fruit"] = df["fruit"].replace(to_replace=["redapple", "greenapple"], value="apple")
后续操作提示
处理完成后fruit列的唯一值会变为4个,再执行Df = pd.get_dummies(Df, drop_first=True)生成3个虚拟变量,既避免了虚拟变量陷阱,也不会出现sns.heatmap无法识别特征的问题。
内容的提问来源于stack exchange,提问作者JoeRoganFan69
相关产品推荐
相关产品推荐

