Pandas将dict嵌套到datafram

2024-09-24 00:24:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

pd.DataFrame(allFrame)或{}两者都不起作用,只返回json

如何将kpi_X作为列名接收?在

我发现Python dict to DataFrame Pandas也在做类似的事情。不过,我认为这个操作应该更简单一些


Tags: todataframepandas列表dictfirstpdkpi
2条回答

看来你得先把那些口述弄平。在

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

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的用法,这意味着列表中的每个dict都是dataframe中的一行。在

所以:

^{pr2}$
pd.DataFrame(list(allFrame.items()),columns=['modelName','statVlues'])

相关问题 更多 >