如何将DataFrame列值匹配嵌套列表元素并累加对应列表值?
高效计算资产总价方案
步骤1:构建资产-价格映射字典
先把嵌套的assets和price转换成扁平化的字典,后续查找价格的效率为O(1),远快于遍历嵌套结构:
# 生成资产到价格的映射字典 price_map = {} for asset_group, price_group in zip(assets, price): for sub_assets, sub_prices in zip(asset_group, price_group): for name, p in zip(sub_assets, sub_prices): price_map[name] = p
步骤2:计算每行总价
方案一:简洁版(适用于中小规模数据)
利用apply快速完成逐行映射求和:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'Car': ['BMW', 'Ferrari'], 'Bike': ['Ducati', 'Honda'], 'Phone': ['Apple', 'Oppo'] }) # 生成总价列 df['Total_Cost'] = df.apply(lambda row: sum(price_map[item] for item in row), axis=1)
方案二:全向量化版(适用于大规模数据)
彻底规避逐行循环,用replace批量转换价格后求和,效率更高:
# 批量替换为价格后按行求和 df['Total_Cost'] = df.replace(price_map).sum(axis=1)
最终输出结果:
Car Bike Phone Total_Cost 0 BMW Ducati Apple 560060 1 Ferrari Honda Oppo 872240
内容的提问来源于stack exchange,提问作者Avijit Das
相关产品推荐
相关产品推荐

