python - 如何在DataFrame中提取单个字符串并删除其他字符串
问题描述
我将类别名称与技能名称结合起来按类别名称对其进行排序。现在我有如下列的表格
(Category1) Skill 1
(Category1) Skill 2
(Category1) Skill 3
(Category1) Skill 4
(Category1) Skill 5
(Category1) Skill 6
(Category2) Skill 7
(Category2) Skill 8
(Category2) Skill 9
(Category2) Skill 10
(Category2) Skill 11
(Category2) Skill 12
我想每个第一个技能只留下一个类别标题并删除其他,类似于有这样的表
(Category1) Skill 1
Skill 2
Skill 3
Skill 4
Skill 5
Skill 6
(Category2) Skill 7
Skill 8
Skill 9
Skill 10
Skill 11
Skill 12
有任何想法吗?谢谢
解决方案
您可以拆分字符串并检索最后一部分Skill x
,以及检查Categoryx
重复的位置,并使用结果替换为拆分的部分:
import numpy as np
m = df.col1.str.split(r'\) ', expand=True)
df['col1'] = np.where(m.duplicated(subset=0), m[1], df.col1)
col1
0 (Category1) Skill 1
1 Skill 2
2 Skill 3
3 Skill 4
4 Skill 5
5 Skill 6
6 (Category2) Skill 7
7 Skill 8
8 Skill 9
9 Skill 10
10 Skill 11
11 Skill 12
输入数据 -
col1
0 (Category1) Skill 1
1 (Category1) Skill 2
2 (Category1) Skill 3
3 (Category1) Skill 4
4 (Category1) Skill 5
5 (Category1) Skill 6
6 (Category2) Skill 7
7 (Category2) Skill 8
8 (Category2) Skill 9
9 (Category2) Skill 10
10 (Category2) Skill 11
11 (Category2) Skill 12
推荐阅读
- python - 我正在用 python 构建一个聊天机器人。我在运行代码时遇到问题
- r - 每行的调色板从低到高
- javascript - 如何从提交表单中获取输入值并存储在 redux 存储变量中?
- swift - 使用 2 个条件过滤 UITableView 中的领域数据
- c# - 在这种情况下,垃圾收集器是否重新收集了该对象?
- c++ - c++-将大文件记录处理到cpp容器中的最有效方法
- java - 在数组列表中查找重复值并打印重复值
- elixir - Phoenix中常用逻辑在哪里写
- reactjs - 在 react-plotly.js 中将绘图保存为 png 文件?
- java - 如何在 Docker 映像中安装 Java 9 和 Gradle