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

将dataframe转换为字典会使用空格重命名列标题

  •  1
  • rahlf23  · 技术社区  · 7 年前

    我注意到使用 to_dict() dash-table 通过它 data 属性,它根据静态HTML布局中指定的预定义列名填充数据表(列标题不需要动态更新,因为它们的顺序不依赖于任何回调)。以以下示例数据帧为例:

    import pandas as pd
    
    df = pd.DataFrame({'Distance (ft)': [1, 2, 3, 4, 5],
        'City': ['Seattle','Portland','Spokane','Everett','Tacoma'],
        'Temp (F)': [10, 20, 30, 40, 50]})
    

       Distance (ft)      City  Temp (F)
    0              1   Seattle        10
    1              2  Portland        20
    2              3   Spokane        30
    3              4   Everett        40
    4              5    Tacoma        50
    

    当我尝试使用转换此数据帧时 df.to_dict() 默认的 orient='dict' ,我返回我所期望的:

    {'Distance (ft)': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}, 'City': {0: 'Seattle', 1: 'Portland', 2: 'Spokane', 3: 'Everett', 4: 'Tacoma'}, 'Temp (F)': {0: 10, 1: 20, 2: 30, 3: 40, 4: 50}}
    

    orient 例如:

    df.to_dict('records')
    df.to_dict('rows')
    

    [{'_0': 1, 'City': 'Seattle', '_2': 10}, {'_0': 2, 'City': 'Portland', '_2': 20}, {'_0': 3, 'City': 'Spokane', '_2': 30}, {'_0': 4, 'City': 'Everett', '_2': 40}, {'_0': 5, 'City': 'Tacoma', '_2': 50}]
    

    是否可以在不必执行所需列名和输出字典键之间的中间映射的情况下返回以下内容?

    [{'Distance (ft)': 1, 'City': 'Seattle', 'Temp (F)': 10}, {'Distance (ft)': 2, 'City': 'Portland', 'Temp (F)': 20}, {'Distance (ft)': 3, 'City': 'Spokane', 'Temp (F)': 30}, {'Distance (ft)': 4, 'City': 'Everett', 'Temp (F)': 40}, {'Distance (ft)': 5, 'City': 'Tacoma', 'Temp (F)': 50}]
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   BENY    7 年前

    [y.iloc[0,:].to_dict() for x , y in df.groupby(level=0)]
    [{'City': 'Seattle', 'Distance (ft)': 1, 'Temp (F)': 10}, {'City': 'Portland', 'Distance (ft)': 2, 'Temp (F)': 20}, {'City': 'Spokane', 'Distance (ft)': 3, 'Temp (F)': 30}, {'City': 'Everett', 'Distance (ft)': 4, 'Temp (F)': 40}, {'City': 'Tacoma', 'Distance (ft)': 5, 'Temp (F)': 50}]