PySpark - 丁字裤创建一个新列
我有 dataframe 作为:
假设只有 3 您需要检查的员工:John,Stacy或Marsha。 我想制作这样的新列:
这在这里更好 regex 或者 grep? 我应该尝试什么功能? 谢!
EDIT: 我尝试了一堆解决方案,但似乎没有工作。 我应该放弃,而是为每个员工创建列的列吗? IE:
ID Notes
2345 Checked by John
2398 Verified by Stacy
3983 Double Checked on 2/23/17 by Marsha
假设只有 3 您需要检查的员工:John,Stacy或Marsha。 我想制作这样的新列:
ID Notes Employee
2345 Checked by John John
2398 Verified by Stacy Stacy
3983 Double Checked on 2/23/17 by Marsha Marsha
这在这里更好 regex 或者 grep? 我应该尝试什么功能? 谢!
EDIT: 我尝试了一堆解决方案,但似乎没有工作。 我应该放弃,而是为每个员工创建列的列吗? IE:
ID Notes John Stacy Marsha
2345 Checked by John 1 0 0
2398 Verified by Stacy 0 1 0
3983 Double Checked on 2/23/17 by Marsha 0 0 1
没有找到相关结果
已邀请:
4 个回复
八刀丁二
赞同来自:
这个表达提取物
员工的姓名
的
任何职位
, 它位于哪里
后
文本列中的空白 /
/
详细地:
创建一个样本 dataframe
做出必要的进口
在
删除名称
从柱子
.
这里
regex
/
/ 方法
/./
- 爱的象征 /除了新的线条/
/从/
- 单词
在文中
/\s+/
- 一个或多个差距
/\w+/
- 字母数字字符或长度的同步
和
group_number
掠夺 4, 因为 group
位于表达式中的第4个位置
https://databricks-prod-cloudf ... .html
笔记:
它似乎是一个更清洁的版本和
https://regex101.com/r/2lk6eV/3
莫问
赞同来自:
在最简单的形式和按照上述情况下,应该足够了,虽然 OP 如果有其他样本,必须在任何其他单词之前发布更多样本
.
代码
https://regex101.com/r/Qxfx0B/3
Regex
替换
结果
输入
出口
笔记:
上述结论将每个列划分为标签。
, 因此,它看起来可能存在错误的肉眼,但只需使用在线解析器 regex 并插入
在符合性部分 regex, 您必须在每个列所在的位置展示。 begins/ends.
解释
Regex
批准线头开始的位置
捕获一个或多个单词符号 /
/ 团体 1
[ \t]*
对应于任何数量的间隙或标签符号 /
[ \t]
可以被替换
在一些实施例中 regex, 如 PCRE/
抓住小组中的以下内容 2
对应任何符号 /除了新字符串,如果不使用修饰符
/
对应于单词的边界
, 后面的后面
字面上地
[ \t]+
匹配一个或多个间隙或标签字符
抓住一个或多个单词符号 /
/ 团体 3
[ \t]*
对应于任何数量的间隙或标签符号
匹配任何次数的字符
批准线末端的位置
替换
对应于最近比较了第一个Grate Group的相同文本
标签符号
对应于最近比较第二个拍卖组的相同文本
标签符号
对应于最近比较第三捕捉组的相同文本
诸葛浮云
赞同来自:
只要 3 员工
, 必须检查哪个:John,Stacy或3月"/.
如果这是一个真正众所周知的列表,那么最简单的方法可以使用这个名字列表用单词的边界引用:
窦买办
赞同来自:
如果您想使用 regex 要提取正确的值,您需要类似的东西
</groupid>