python - 如何从一列解析以使用 Pandas 和 Regex 创建另一列?
问题描述
我有一个包含一列的 pd 数据user_id
框,每一行以“/tgroup ...”结尾
我想创建一个新列group_id
,其中每一行都有相应的“tgroup ...”匹配user_id
。
到目前为止,这是我的实现:
user_id
0 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-0
1 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-1
2 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-2
3 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-3
4 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-4
df['group_id'] = df['user_id'].apply(lambda x: re.findall('(^\t)',x))
print(df.head())
user_id group_id
0 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-0 []
1 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-1 []
2 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-2 []
3 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-3 []
4 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-4 []
显然 lambda/regex 方法没有获取我想要的字符串选择。
有任何想法吗?
解决方案
是\t
制表符还是反斜杠和t
?如果是后者,您可以尝试:
df['group_id'] = df.user_id.str.extract(r'\\t(.*)')
输出:
user_id group_id
0 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-0 group-0
1 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-1 group-1
2 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-2 group-2
3 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-3 group-3
4 87dce49a-f752-47f8-9bc4-b97a446a85f5\tgroup-4 group-4
推荐阅读
- python - 为自定义数据集运行 yolov3 权重文件代码时,输出 (*.weights) 未出现
- node.js - 如何同时运行来自不同文件夹的多个脚本?
- testing - karate.callSingle 在 karate-config.js 中找不到 .feature 文件
- java - 将元素添加到数组列表/Pojo
- python-3.x - 如何在 python 3 中将菜单连接在一起并在它们之间导航?
- c# - 更改 TargetingFramework 后无法加载文件或程序集...
- android - 如何强制jetpack compose重组?
- reactjs - 反应未处理的拒绝(TypeError):无法读取未定义的属性“_internalPath”
- python-3.x - 使 django2exe python3.9 兼容
- php - Codeception 中的单元测试:如何将 Codeception 指向我的代码?