如何合并两个形状不同的关联DataFrame并将结果值限定为0和1
实现方法
直接利用Pandas原生的索引对齐特性和向量化运算即可实现,不需要编写遍历逻辑,核心代码如下:
import pandas as pd # 将ID列设为索引,实现行列自动对齐计算 main_df = main_df.set_index('ID') sub_df = sub_df.set_index('ID') # 按索引相加,缺失值补0后将最大值限制为1,最后恢复ID为普通列 result = main_df.add(sub_df, fill_value=0).clip(upper=1).reset_index()
逻辑说明
set_index('ID')后两个DataFrame会自动按ID行、列名对齐做运算,不需要手动匹配关联关系add(fill_value=0)处理两个表的行、列差集:sub_df不存在的ID(如示例中的03)、sub_df不存在的列(如示例中的A/F/G)相加时默认补0,不会修改main_df原有值clip(upper=1)直接把所有大于1的数值替换为1,满足输出只能是0/1的要求
内容的提问来源于stack exchange,提问作者Cookie
相关产品推荐
相关产品推荐

