如何基于熊猫中的groupby函数将数据框中的特定列转换为字典?

时间:2019-08-18 15:31:47

标签: python-3.x pandas pandas-groupby

我有一个如下所示的数据框,

df1:
mac            gw_mac         building     rssi
0010403bf0db   b827eb36fb0b   main         -45
0010403bf0db   d827fc36gc0c   main         -67
bf0db0010403   b827eb36fb0b   main         -71
bf0db0010403   d827fc36gc0c   main         -59

基于Mac和Building Group,我需要像df2一样构图,

df2:
mac             building    gw_mac_rssi
0010403bf0db    main        {'b827eb36fb0b':-45,'d827fc36gc0c':-67}
bf0db0010403    main        {'b827eb36fb0b':-71,'d827fc36gc0c':-59}

如何在数据框中以新的列名将特定的列值构造为字典?

2 个答案:

答案 0 :(得分:1)

这是一种方法

df.groupby(['mac','building']).apply(lambda x : x.set_index('gw_mac')['rssi'].to_dict()).reset_index()
            mac building                                           0
0  0010403bf0db     main  {'b827eb36fb0b': -45, 'd827fc36gc0c': -67}
1  bf0db0010403     main  {'b827eb36fb0b': -71, 'd827fc36gc0c': -59}

答案 1 :(得分:1)

您也可以这样做:

df = df.groupby(['mac', 'building']).agg(tuple).agg(lambda x: dict(zip(*x)), axis=1)