我有一个如下所示的数据框,
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}
如何在数据框中以新的列名将特定的列值构造为字典?
答案 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)