如何在Python中匹配指定列值后为多列填充对应特定值
实现方案
你可以直接用pandas的布尔索引实现需求,两种常用写法如下:
写法1:单规则直接赋值(适合规则少的场景)
直接筛选出id列为d_in的行,对应列赋值即可:
# 生成匹配行的布尔掩码 mask = df['id'] == 'd_in' # 批量给指定列赋值 df.loc[mask, 'start'] = 'din' df.loc[mask, 'stat'] = 8
写法2:字典映射规则(适合多规则扩展场景)
如果后续需要增加更多匹配规则,可以把规则统一存在字典里,避免重复写逻辑:
# 定义匹配规则:键为id列要匹配的值,值为各列要填充的内容 fill_map = { 'd_in': {'start': 'din', 'stat': 8} # 后续加新规则直接在这里加就行,比如: # 'hello': {'start': 'h', 'stat': 5} } # 遍历应用规则 for match_id, cols in fill_map.items(): match_mask = df['id'] == match_id for col, fill_val in cols.items(): df.loc[match_mask, col] = fill_val
两种写法运行后都能得到你要的预期结果。
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

