使用多个键将pandas数据框转换为字典

Naz*_*uri 5 dictionary loops key pandas jupyter

我试图用四个键将数据帧转换成字典,这些键全部来自列。我也有多个列,我想通过使用由这四个列构建的键来返回值。我用循环的方式工作,但最终遇到内存错误。我很好奇,有没有更有效的方法呢?

数据框如下所示:

    Service Bill Weight Zone    Resi    UPS FedEx   USPS    DHL
    1DEA           1       2    N      33.02    9999    9999    9999
    1DEA           2       2    N      33.02    9999    9999    9999
    1DEA           3       2    N      33.02    9999    9999    9999
Run Code Online (Sandbox Code Playgroud)

我想为每个运营商都有一个像这样的钥匙:

    price[('1DEA', '1', '2', 'N', 'UPS')]=33.02
    price[('1DEA', '1', '2', 'N', 'FedEx')]=9999
Run Code Online (Sandbox Code Playgroud)

我已经试过了:

    price = {}
    carriers = ['UPS', 'FedEx', 'USPS','DHL'] 
    for carrier in carriers:
        for row in rate_keys.to_dict('records'):
              key = (row['Service'], row['Bill Weight'], row['Zone'], 
              row['Resi'], carrier)
              rate_keys[key] = row[carrier]
Run Code Online (Sandbox Code Playgroud)

jpe*_*peg 2

您可能不应该rate_keys在循环时更新。我想你的示例脚本的最后一行应该是

price[key] = row[carrier]
Run Code Online (Sandbox Code Playgroud)