python - 从 pandas 单元格中提取特定符号,然后用它们作为键的 dict 中的值替换它们
问题描述
我的数据看起来像这样,这是其中的两列:
Index MSC Primary MSC Secondary
0 05C25 (05C20 20F05)
1 20-04 (20F55 62Qxx)
2 13F20 (17B20 22E40 22F30 65Fxx)
3 05Exx (20-04 20H20)
4 20G40 (05C25)
这些是 MSC 代码,对应于不同的科学领域。我需要在这里用这个字典中的相应主题替换每个代码:https ://mathscinet.ams.org/msnhtml/msc2020.pdf ,其中一些是:“”“00 一般和总体主题;集合 01 历史和传记03 数学逻辑和基础 05 组合“””
首先,我需要从每个代码中分离出前两位数字,例如05C25
转换为05
或从第二列(05E15 14H50)
转换为05, 14
.
然后我需要将每个数字替换为相应的科学,例如05, 14
变成Combinatorics, Algebraic geometry
. 这都是棘手的形式,因为我是 Python 新手,第二列每个单元格中的 MSC 代码数量不同,所以我不能在那里使用索引。
我知道第一列我可以使用索引:
df['MSC Primary'] = [x[:2] for x in df['MSC Primary']]
但这不适用于另一列,因为有几个辅助 MSC 代码,每个小区都不同。
感谢您的帮助,非常感谢。
解决方案
假设您的 MSC 代码字典是d
,这有效:
>>> df["MSC Secondary"].apply(lambda x: [d.get(s[:2]) for s in x.replace("(","").replace(")","").split(" ")])
0 [Combinatorics, Group theory and generalizations]
1 [Group theory and generalizations, Statistics]
2 [Nonassociative rings and algebras, Topologica...
3 [Group theory and generalizations, Group theor...
4 [Combinatorics]
推荐阅读
- c# - “限定在该命名空间中使用类型”的语句在 C# 中是什么意思
- android - Android TV-leanback 库如何向 VideoSupportFragmentGlueHost 添加更多按钮
- pdf - 从 PDF C# 中提取的国家字符/Unicode 字符
- r - 如何在包中使依赖项成为可选
- swift - 将类类型作为函数参数传递并用作?铸造班级
- apache-spark - 如何在 Spark 中按其他 DataFrame 中的条件过滤 DataFrame
- javascript - 如果属性与数组中的值匹配,则过滤对象
- java - 目标无法到达,“汽车”返回 null
- angular - 哪个日期范围选择器最适合与角度 6 一起使用
- scala - 如何在scala中找到不同的ngram?