字典中的列表(其中包含一个字典)到数据框

list (which contain a dict in it) inside dict to data frame

您好,我有以下数据

data = {
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4,
    "efgh": [
        {
            "e": 5,
            "f": 6,
            "g": 7,
            "h": 8
        }
    ]
}

我想将其转换为具有以下格式的 pandas 数据框

我试过以下方法

df = pd.DataFrame(data)
df

我在键“efgh”之前和之后创建了两个词典。 我将词典“dict1”附加到词典“dict2”。
在 pandas 中,我们将键转换为列,将值转换为行。

import pandas as pd

data = { "a": 1, "b": 2, "c": 3, "d": 4, "efgh": [ { "e": 5, "f": 6, "g": 7, "h": 8 } ] }
dict1 = {k: v for k, v in data.items() if k!="efgh"}
dict2 = {k: v for k, v in data['efgh'][0].items()}

dict1.update(dict2)

df = pd.DataFrame([dict1])

print(df)

这看起来有点像您要找的 pd.json_normalize?如果你这样做

df = pd.json_normalize(data, record_path="efgh", meta=["a", "b", "c", "d"])

你会得到

   e  f  g  h  a  b  c  d
0  5  6  7  8  1  2  3  4

这基本上就是您想要的,只是列的顺序不同。您可以通过以下方式进行调整:

df = df.sort_index(axis=1)
   a  b  c  d  e  f  g  h
0  1  2  3  4  5  6  7  8