【发布时间】:2020-01-17 05:09:14
【问题描述】:
我有如下数据框,
df1:
mac gw_mac building rssi type payload
0 0010403bf0db b827eb36fb0b main -45 iBeacon e2c56db5dffb48d2b060d0f5a71096e0
1 0010403bf0db d827fc36gc0c main -67 other 02010612ff590080bc2c01001d0b3a00000005000000
2 bf0db0010403 b827eb36fb0b main -71 iBeacon e2c56db5dffb48d2b060d0f5a71096e0
3 bf0db0010403 d827fc36gc0c main -59 other 02010612ff590080bc2c01001d0b3a00000005000000
基于“mac”和“building”的组,“gw_mac”和“rssi”的列值必须以“gw_mac_rssi”列的名称作为字典。
同样,基于上述相同的分组条件,“payload”和“type”的列值必须以“payload_type”的名称作为字典框起来,结果数据框应该是,
df2:
mac building gw_mac_rssi payload_type
0 0010403bf0db main {'b827eb36fb0b':-45,'d827fc36gc0c':-67} {'e2c56db5dffb48d2b060d0f5a71096e0':'iBeacon','02010612ff590080bc2c01001d0b3a00000005000000':'other'}
1 bf0db0010403 main {'b827eb36fb0b':-71,'d827fc36gc0c':-59} {'e2c56db5dffb48d2b060d0f5a71096e0':'iBeacon','02010612ff590080bc2c01001d0b3a00000005000000':'other'}
我试过了
df.groupby(['mac', 'building']) \
.apply(lambda x: x.set_index('edge_mac_gw_mac_rssi')['rssi'].to_dict()).apply(lambda x: x.set_index('type')['payload'].to_dict()).reset_index(name=["gw_mac_rssi","payload_type"])
谁能帮助我根据具有多个列值的相同分组条件构建两个不同的字典?
【问题讨论】:
标签: python-3.x pandas dictionary pandas-groupby