python - 熊猫映射列表的字典?
问题描述
如果我有一个列表的字典,并且如果列表值之一匹配,我想将列中的值映射/替换到每个项目的键,我该怎么做?
例如:
MappingDict = {
'argenx SE': ['argenx SE',
'Argenx SE',
'ARGENX SE',
'ARGENX SE NV',
'ARGENX SE COMMON STOCK',
'ARGENX SE ARGX',
'argenx SE ADR'],
'Arête Industries, Inc': [],
'Ares Management Corporation': ['Ares Management Corporation',
'Ares Management Corporation 7 % Non-Cum Pfd Registered Shs Series A'],
'Alexandria Real Estate Equities, Inc': ['Alexandria Real Estate Equities, Inc',
'Alexandria Real Estate Equities Inc 3.45 04/30/2025',
'Alexandria Real Estate Equities Inc-3.45%-4-30-2025']
}
我有看起来像这样的数据框
df['Name']:
Name
Alexandria Real Estate Equities Inc 3.45 04/30/2025
ARGENX SE NV
Arête Industries, Inc
我希望它导致:
df['Name']:
Name
Alexandria Real Estate Equities, Inc
argenx SE
Arête Industries, Inc
基本上,如果值列表中的项目匹配,那么它应该用键替换列的值。如果键的值为空白,则该值应保持原样。我试图替换和映射来做到这一点,但似乎它们不是为使用列表的字典而设计的。我能做些什么来完成这项工作?
解决方案
explode
那就让我们试试吧replace
s = pd.Series(MappingDict).explode()
df['name_new'] = df.Name.replace(dict(zip(s,s.index)))
df
Name name_new
0 Alexandria Real Estate Equities Inc 3.45 04/30... Alexandria Real Estate Equities, Inc
1 ARGENX SE NV argenx SE
2 Arête Industries, Inc Arête Industries, Inc
推荐阅读
- python - 如何使用键盘检测来控制无人机?
- python - tqdm显示的“速度”是瞬时速度还是平均速度?
- python - 有没有办法只显示仅检测到对象边界框的视频中的帧
- python - Python,异步,代码完成后出现奇怪错误:事件循环已关闭进程完成,退出代码为 0
- asp.net-core - ASP.NET Core 3.1 + OData + EF Core 多对多扩展问题
- reactjs - 如何使用 KeyboardDateTimePicker 防止过去一个小时
- nestjs - 添加另一个模块破坏了nestjs应用程序
- html - Datatable jquery不显示数据
- angular - 检查表角度中是否存在数据
- python-3.x - 裁剪和调整大小后如何翻译图像上的点?