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

将列表字典转换为数据帧

  •  0
  • Huzo  · 技术社区  · 6 年前

    假设我有一本这样的字典:
    {'blue': [1,2,3], 'red' : [1,3]}
    我想把它转换成一个包含两列的数据框,其中一列是颜色名(红色或蓝色),另一列是值。也许是这样的:

    blue    1
    blue    2
    blue    3
    red     1
    red     3
    

    这样做有捷径吗?我已经检查了将字典传输到dataframe的方法,但是没有一个提到值是列表的情况。

    谢谢。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Teoretic    6 年前

    也许最简单的方法是在把dict交给 pd.DataFrame

    import pandas as pd
    
    d = {'blue': [1,2,3], 'red' : [1,3]}
    
    lst = [(k, i) for k, v in d.items() for i in v]
    
    df = pd.DataFrame(lst)
    
    df
           0    1
    0   blue    1
    1   blue    2
    2   blue    3
    3   red     1
    4   red     3
    
    
        2
  •  1
  •   Space Impact    6 年前

    使用 pandas.concat 具有 pandas.Series :

    d = {'blue': [1,2,3], 'red' : [1,3]}
    s = pd.concat([pd.Series(v, index=np.repeat(k, len(v))) for k,v in d.items()])
    
    print(s)
    blue    1
    blue    2
    blue    3
    red     1
    red     3
    dtype: int64