如何将pandas DataFrame指定列与键名匹配的字典对应值相乘
操作方法
你可以直接用pandas内置的向量化乘法实现需求,不需要遍历列,代码简洁且运行效率更高:
假设你的DataFrame命名为df,匹配的乘数字典命名为multiplier_dict,直接执行以下代码即可:
# 仅对字典中存在匹配列名的列做乘法,其余列保持不变 df[multiplier_dict.keys()] = df[multiplier_dict.keys()].mul(multiplier_dict, axis=1)
代码说明
mul是pandas的原生乘法方法,指定axis=1后会自动将字典的键和DataFrame的列名做匹配,对应列乘上字典中对应的数值- 即使字典中存在部分键不在你的DataFrame列中,该方法也会自动忽略这些不存在的键,不会抛出错误
如果你不想修改原始DataFrame,可以先复制一份再操作:
new_df = df.copy() new_df[multiplier_dict.keys()] = new_df[multiplier_dict.keys()].mul(multiplier_dict, axis=1)
可选遍历写法
如果更习惯遍历逻辑,也可以用如下写法实现,仅适合数据量较小的场景:
for col, val in multiplier_dict.items(): # 只处理同时存在于字典和DataFrame列中的字段 if col in df.columns: df[col] = df[col] * val
结果验证
你可以快速核对结果是否正确:比如原208230_s_at norm列第一行数值为0.005718,乘以字典中对应值2.3012184212079356后,结果约为0.01316,和操作后的列数值核对即可确认操作正常。
内容的提问来源于stack exchange,提问作者guitarman
相关产品推荐
相关产品推荐

