python - Pandas 将字典嵌套到数据框

标签 python pandas dictionary nested

我有一个像这样的简单嵌套列表:

allFrame= [{'statValues': {'kpi2': 2, 'kpi1': 1}, 'modelName': 'first'},{'statValues': {'kpi2': 4, 'kpi1': 2}, 'modelName': 'second'}, {'statValues': {'kpi2': 3, 'kpi1': 3}, 'modelName': 'third'}]

a pd.DataFrame(allFrame)pd.DataFrame.from_dict(allFrame) 两者都不起作用,只返回 json

我怎样才能接收 kpi_X 作为列名?

我找到了Python dict to DataFrame Pandas做类似的事情。不过我相信这个操作应该更简单

最佳答案

看来您需要先扁平化这些命令。

首先在列表上应用展平函数:

def flatten_dict(d, prefix='__'):
    def items():
        # A clojure for recursively extracting dict like values
        for key, value in d.items():
            if isinstance(value, dict):
                for sub_key, sub_value in flatten_dict(value).items():
                    # Key name should imply nested origin of the dict,
                    # so we use a default prefix of __ instead of _ or .
                    yield key + prefix + sub_key, sub_value
            else:
                yield key, value
    return dict(items())

另请注意 orient=records 的使用,这意味着列表中的每个字典都是数据框中的一行。

所以:

l = list(map(flatten_dict, allFrame))
df = pd.DataFrame.from_dict(l, orient='records')

关于python - Pandas 将字典嵌套到数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39678854/

相关文章:

Python。从 data.frame 获取结构

python - django-为什么重定向后,表单显示 "None"

python - 将 pandas Excel Dataframe 复制到没有索引标题的剪贴板

python - Pandas - GroupBy 2 列 - 无法重置索引

c# - 有没有办法在迭代期间编辑字典的值?

python - Where 子句错误 : column does not exist

python - 不寻常的 tkinter 字体

c# - 查询词典词典?

Python/Pandas 分箱数据 Timedelta

javascript - map和reduce的主要区别