首页 > 解决方案 > 如何从一列解析以使用 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 方法没有获取我想要的字符串选择。

有任何想法吗?

标签: pythonpandas

解决方案


\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

推荐阅读