首页 > 解决方案 > 如何将字典列表更改为定义的数据框格式?

问题描述

我有一个字典列表,如下所示,

list_of_dict = [{"mac":"0010403bf0db", "rssi":-42, 
                 "gw_mac":"b827eb36fb0b", "detail":"main_building"}, 
                {"mac":"0010403bf0db", "rssi":-87, 
                 "gw_mac":"d827fc36gc0c", "detail":"main_building"}]

如何将上面的字典列表转换为下面提到的数据框格式?

required_df = mac            detail        b827eb36fb0b      d827fc36gc0c
              0010403bf0db   main_building  -42              -87

标签: pythonpandaspandas-groupby

解决方案


首先DataFrame由构造函数创建,如果mac,detail和中的值gw_mac是唯一的,则可以通过DataFrame.set_indexwith重塑Series.unstack

df  = (pd.DataFrame(list_of_dict)
         .set_index(['mac','detail', 'gw_mac'])['rssi']
         .unstack(fill_value=0)
         .reset_index()
         .rename_axis(None, axis=1))
print (df)
            mac         detail  b827eb36fb0b  d827fc36gc0c
0  0010403bf0db  main_building           -42           -87

如果 3 列中的值不是唯一值,则必须通过以下方式聚合DataFrame.pivot_table

df  = (pd.DataFrame(list_of_dict)
         .pivot_table(index=['mac','detail'],columns='gw_mac',values='rssi', aggfunc='mean')
         .reset_index()
         .rename_axis(None, axis=1))
print (df)
            mac         detail  b827eb36fb0b  d827fc36gc0c
0  0010403bf0db  main_building           -42           -87

推荐阅读