【问题标题】:How do I create nested dictionary from pandas data frame while adding numbers如何在添加数字时从熊猫数据框创建嵌套字典
【发布时间】:2020-12-02 21:07:03
【问题描述】:

我正在尝试创建一个嵌套字典,其中键为 office,然后在该 office 中添加其余列。

应该看起来像这样。

final_dict = {'YELLOW': {'Files Loaded': 21332, 'Files Assigned': 10613} 'RED':....}....

当前代码是,我完全不知道如何嵌套和添加值。

d = {'Office': ['Yellow','Yellow','Red', 'Red', 'Blue', 'Blue'], 'Files Loaded': [1223, 3062, 10, 100, 1520, 75], 'Files Assigned': [1223, 30, 1500, 10, 75, 12],
     'Files Analyzed': [1223, 15, 25, 34, 98, 1000], 'Discrepancies Identified': [17, 30, 150, 1456, 186, 1896]}

df = pd.DataFrame(data=d)

fields = ['Files Loaded', 'Files Assigned', 'Files Analyzed', 'Discrepancies Identified']

final_dict = df.groupby('Office')[fields].apply(list).to_dict()
print(final_dict)

{'Blue': ['Files Loaded', 'Files Assigned', 'Files Analyzed', 'Discrepancies Identified'], 'Red': ['Files Loaded', 'Files Assigned', 'Files Analyzed', 'Discrepancies Identified'], 'Yellow': ['Files Loaded', 'Files Assigned', 'Files Analyzed', 'Discrepancies Identified']}


【问题讨论】:

  • 原始“办公室”列表中有重复条目。如果您希望将Office 作为最终列表中的键,您打算如何区分两个相同的名称? (注意:字典不能有两个或多个同名的键。)
  • 我正在尝试将所有蓝色的“已加载文件”添加在一起(所有文件都相同)。所以最终的字典看起来像。 {'YELLOW': {'Files Loaded': 21332, 'Files Assigned': 10613}... 里面的数字是加载的所有“Yellow”文件的总数。

标签: python python-3.x dictionary dictionary-comprehension


【解决方案1】:

使用以下输入:

import pandas as pd
from pprint import pprint

d = {'Office': ['Yellow', 'Yellow', 'Red', 'Red', 'Blue', 'Blue'], 
     'Files Loaded': [1223, 3062, 10, 100, 1520, 75],
     'Files Assigned': [1223, 30, 1500, 10, 75, 12],
     'Files Analyzed': [1223, 15, 25, 34, 98, 1000], 
     'Discrepancies Identified': [17, 30, 150, 1456, 186, 1896]}
df = pd.DataFrame(data=d)

我们可以使用 pandas groupby 和聚合 (agg) 函数来汇总每个办公室的总数。然后通过在'index' 上使用to_dict,我们得到作为字典提供的数据,其中keyOffice,值是字典,其中key 是列名,值是总计数。

data = df.groupby('Office').agg('sum')
answer = data.to_dict('index')

pprint(answer)

输出:

{'Blue': {'Discrepancies Identified': 2082,
          'Files Analyzed': 1098,
          'Files Assigned': 87,
          'Files Loaded': 1595},
 'Red': {'Discrepancies Identified': 1606,
         'Files Analyzed': 59,
         'Files Assigned': 1510,
         'Files Loaded': 110},
 'Yellow': {'Discrepancies Identified': 47,
            'Files Analyzed': 1238,
            'Files Assigned': 1253,
            'Files Loaded': 4285}}

【讨论】:

  • 完美!感谢您的帮助
猜你喜欢
  • 2019-01-11
  • 1970-01-01
  • 2021-11-28
  • 2023-01-14
  • 2017-01-01
  • 2021-09-27
  • 2021-02-04
  • 1970-01-01
相关资源
最近更新 更多