如何在添加数字时从 pandas 数据框创建嵌套字典
How do I create nested dictionary from pandas data frame while adding numbers
我正在尝试创建一个嵌套字典,并将键作为办公室,然后将其余列添加到该办公室内。
应该看起来像这样。
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']}
使用以下输入:
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
,我们得到作为字典提供的数据,其中 key
是 Office
,值是一个字典,其中 [=17] =] 是列名,值是聚合计数。
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}}
我正在尝试创建一个嵌套字典,并将键作为办公室,然后将其余列添加到该办公室内。
应该看起来像这样。
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']}
使用以下输入:
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
,我们得到作为字典提供的数据,其中 key
是 Office
,值是一个字典,其中 [=17] =] 是列名,值是聚合计数。
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}}