You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas多列值生成元组键字典并补全缺失值

高效构建含默认值的元组键字典(基于Pandas DataFrame)

需求说明

需要将DataFrame中的Factory和Warehouse列值组合为元组键,Dist Fact-Whse列值作为对应字典值;对于所有Factory与Warehouse的可能组合中不存在的键对,需赋值默认值(如9999)。原手动循环实现繁琐低效,需更优雅高效的方案。

示例数据

Periods(Days)FactoryWarehouseSales OutletsProductsDist Fact-Whse
01BerlinTeltowMagdeburgMaracuja19.6
12HamburgWismarLubeckHimbeer126.2
23BerlinKleinmachnowHalleMalaga26.9
34HamburgWismarLubeckWaldmeister126.2
45BerlinKleinmachnowLeipzigWalnuss26.9

原实现代码(低效)

F = df.Factory.drop_duplicates().to_list()
W = df.Warehouse.drop_duplicates().to_list()

dist1 = {};

for i in df.index:
    key = (df.at[i, 'Factory'], df.at[i, 'Warehouse'])
    value = df.at[i, 'Dist Fact-Whse']
    dicT = {key : value}
    dist1.update(dicT)

for f in F:
    for w in W:
        if (f, w) not in dist1:
            dist1[(f, w)] = 9999

高效解决方案

方法1:利用Pandas透视表+栈式转换

借助pivot_table自动生成所有Factory-Warehouse组合,填充默认值后直接转为字典:

import pandas as pd

# 先对重复的(Factory,Warehouse)对去重(保留第一个匹配值)
df_unique = df.drop_duplicates(subset=['Factory', 'Warehouse'])

# 生成透视表,自动补全所有组合并填充默认值
pivot_df = df_unique.pivot_table(
    index='Factory',
    columns='Warehouse',
    values='Dist Fact-Whse',
    fill_value=9999
)

# 转换为元组键的字典
dist_dict = pivot_df.stack().to_dict()

方法2:迭代工具生成全组合+字典推导

用itertools.product生成所有可能的键对,结合字典推导快速构建:

import pandas as pd
from itertools import product

# 获取唯一的工厂和仓库列表
factories = df['Factory'].unique()
warehouses = df['Warehouse'].unique()

# 先构建已存在的键值对字典(去重)
existing_pairs = df.drop_duplicates(subset=['Factory', 'Warehouse'])\
                   .set_index(['Factory', 'Warehouse'])['Dist Fact-Whse']\
                   .to_dict()

# 生成全组合,不存在的键对用默认值填充
dist_dict = {pair: existing_pairs.get(pair, 9999) for pair in product(factories, warehouses)}

期望结果

{
    ('Berlin', 'Teltow'): 19.6,
    ('Berlin', 'Kleinmachnow'): 26.9,
    ('Berlin', 'Wismar'): 9999,
    ('Hamburg', 'Teltow'): 9999,
    ('Hamburg', 'Kleinmachnow'): 9999,
    ('Hamburg', 'Wismar'): 126.2
}

内容的提问来源于stack exchange,提问作者Vondoe79

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:46:28