将数据框转换为嵌套字典

时间:2020-08-19 04:01:37

标签: python pandas dictionary

下面是我的子集数据框,由于对Python相当陌生,我很难尝试将其转换为所需的输出。本质上,我想在列表内创建一个嵌套的字典,以列名作为值,然后在列表内创建另一个嵌套的字典。这可行吗?

import pandas as pd

    Sector             Community Name
0   centre: 10901.0    park: 3238.0
1   northeast: 6958.0  heights: 1955.0

所需的输出:

[{'column': 'Sector',
  'value': [{'name': 'centre', 'value': 10901.0},
   {'name': 'northeast', 'value': 6958.0}]},

  {'column': 'Community Name',
    'value': [{'name': 'park', 'value': 3238.0},
     {'name': 'heights', 'value': 1955.0},
     {'name': 'hill', 'value': 1454.0}]}]

2 个答案:

答案 0 :(得分:1)

在上述情况下使用pandas可能会过大,这是使用python inbuilt functions的解决方案,您可以尝试一下,

input_ = {"Sector": ["centre: 10901.0", "northeast: 6958.0"],
          "Community Name": ["park: 3238.0", "heights: 1955.0"]}

result = []
for k, v in input_.items():
    result.append({
        "column" : k,
        "value" : [dict(zip(['name', 'value'], vv.split(":"))) for vv in v]
    })

print(result)

[{'column': 'Sector',
  'value': [{'name': 'centre', 'value': ' 10901.0'},
            {'name': 'northeast', 'value': ' 6958.0'}]},
 {'column': 'Community Name',
  'value': [{'name': 'park', 'value': ' 3238.0'},
            {'name': 'heights', 'value': ' 1955.0'}]}]

答案 1 :(得分:1)

@sushanth's answer,我可能会总结一下这个解决方案。假设您的dataframe变量定义为df

result = []
for header in list(df):
    column_values = df[header].to_list()
    result.append({
        "column" : header,
        "value" : [dict(zip(['name', 'value'], str(value).split(":"))) for value in column_values]
    })