从嵌套字典创建多列Pandas DataFrame

时间:2018-07-30 12:20:39

标签: python python-3.x pandas dataframe

我有一个像这样的字典:

{"key1":[0.], "key2":{"a":[0.],"b":[0.],"c":[0.]}, "key3":[0.]}

是否有一种优雅的方法来创建带有嵌套键a,b,c作为子列的Pandas DataFrame?

所有list都包含float个值。

+------+-----------+------+
| key1 | key2      | key3 |
+------+-----------+------+
|      | a | b | c |      |
+------+---+---+---+------+
| 0    | 0 | 0 | 0 | 0    |
+------+---+---+---+------+

1 个答案:

答案 0 :(得分:2)

这是一个漫长的方法。请注意,列的第二层应该有一个值。我将其设置为0,此处尚未指定。

d = {"key1":[0.], "key2":{"a":[1.],"b":[2.],"c":[3.]}, "key3":[4.]}

cols, data = [], []
for k, v in d.items():
    if not isinstance(v, dict):
        cols.append((k, 0))
        data.append(v)
    else:
        for k2, v2 in v.items():
            cols.append((k, k2))
            data.append(v2)

df = pd.DataFrame(list(zip(*data)), columns=pd.MultiIndex.from_tuples(cols))

print(df)

  key1 key2           key3
     0    a    b    c    0
0  0.0  1.0  2.0  3.0  4.0