簡體   English   中英

熊貓嵌套字典到數據框

[英]Pandas nested dict to dataframe

我有一個簡單的嵌套列表,如下所示:

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)pd.DataFrame.from_dict(allFrame)都不起作用,只返回json

我怎樣才能接收 kpi_X 作為列名?

我發現Python dict 到 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 的使用,這意味着列表中的每個 dict 都是數據框中的一行。

所以:

l = list(map(flatten_dict, allFrame))
df = pd.DataFrame.from_dict(l, orient='records')
pd.DataFrame(list(allFrame.items()),columns=['modelName','statVlues'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM