代码之家  ›  专栏  ›  技术社区  ›  Nick

从嵌套dict创建多列Pandas数据帧

  •  2
  • Nick  · 技术社区  · 7 年前

    我有一条口述如下:

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

    有没有一种优雅的方法可以用嵌套键创建Pandas数据框 a,b,c 作为分科?

    所有的 list s包含 float 价值观。

    +------+-----------+------+
    | key1 | key2      | key3 |
    +------+-----------+------+
    |      | a | b | c |      |
    +------+---+---+---+------+
    | 0    | 0 | 0 | 0 | 0    |
    +------+---+---+---+------+
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   jpp    7 年前

    这是冗长的方法。请注意,列的第二级应该有一个值。我已经设置好了 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