如何在Python中使用字典迭代过滤pandas DataFrame并添加匹配值为新列
原有代码问题说明
- 你写的双重循环是遍历Col1和Col2的所有元素做笛卡尔积匹配,不是逐行匹配同一行的两列取值
- 直接给
df['Col3']赋值会修改整列的取值,无法实现仅匹配成功的行才赋值的需求 - 不要使用
dict作为变量名,这是Python的内置关键字,会覆盖原生功能引发异常
正确实现代码
首先修正字典变量名:
map_dict = {'a_w':5,'c_y':8}
实现匹配+过滤逻辑:
# 逐行构造和字典对应的匹配键 df['merge_key'] = df['Col1'] + '_' + df['Col2'] # 匹配字典值生成新列 df['Col3'] = df['merge_key'].map(map_dict) # 过滤出匹配成功的记录,删除辅助列、重置索引 df = df.dropna(subset=['Col3']).drop(columns=['merge_key']).reset_index(drop=True) # 可选:如果需要Col3为整数类型,添加类型转换 df['Col3'] = df['Col3'].astype(int)
内容的提问来源于stack exchange,提问作者bibiji
相关产品推荐
相关产品推荐

