python - 如何将数据框列映射到列表字典?
问题描述
我有一个包含两列的数据框,其中一个类别(area_id)包含另一个类别(location_id),我怎样才能获得一个列表字典,其中键是“area_id”,它们各自的值是给定中存在的“location_id”列表“area_id”?
具体来说,给定数据框:
df = pd.DataFrame(data={'area_id': ['area_1', 'area_1', 'area_1', 'area_2', 'area_2', 'area_3'],
'location_id': ['loc_a', 'loc_a', 'loc_b', 'loc_c', 'loc_d', 'loc_e']})
area_id location_id
0 area_1 loc_a
1 area_1 loc_a
2 area_1 loc_b
3 area_2 loc_c
4 area_2 loc_d
5 area_3 loc_e
我想要以下字典:
{'area_1': ['loc_a', 'loc_b'],
'area_2': ['loc_c', 'loc_d'],
'area_3': ['loc_e']}
下面的代码是一个可行的解决方案,但我想知道是否有更优雅的解决方案可以避免使用“for”循环:
res = {}
for _area in df['area_id'].unique():
_locs = list(df[df['area_id'] == _area]['location_id'].unique())
res[_area] = _locs
谢谢
解决方案
利用:
df.drop_duplicates().groupby('area_id')['location_id'].agg(list).to_dict()
输出:
{'area_1': ['loc_a', 'loc_b'],
'area_2': ['loc_c', 'loc_d'],
'area_3': ['loc_e']}
推荐阅读
- java - 如何使用 RxJava 对来自异步源的数据进行分组
- jenkins - 如何将环境变量作为参数传递给jenkins中的readProperties文件
- r - 使用列中的间隔来填充另一列的值
- git - git pull,不包括特定分支
- floating-action-button - 浮动操作按钮中的颜色矢量资源问题
- ios - UIPickerView EXC_BAD_ACCESS 崩溃
- kubernetes - 无效的 Kubernetes YAML 规范。此处不允许映射值
- python - 合并和更新具有重叠列的多个熊猫数据框
- r - 在 R 中运行 felm(固定效应线性模型)代码时,为什么我只得到 NA?
- spring-boot - 运行多个@SpringBootTest 时不应用@MockBean