2024-04-28 05:00:48 发布
网友
如何根据不同的字符,如'/-,在dataframe中从左开始对字符串进行切片。,我只想这个角色第一次出现。在
key name 1 McDonald's 2 CVS/PHARMACY 3 CVS/Store 4 WAL-MART 5 AMAZON.CO
预期结果:
我不确定这是否需要使用正则表达式?在
选项1 {><
df['for_group'] = df.name.str.split(r"[\'\/\-\.]", expand=True)[0] key name for_group 0 1 McDonald's McDonald 1 2 CVS/PHARMACY CVS 2 3 CVS/Store CVS 3 4 WAL-MART WAL 4 5 AMAZON.CO AMAZON
方案2(最佳方案)str.extract(我个人更喜欢这个,它会匹配,直到找到您想要的停止字符)
str.extract
第二个选择要快得多:
df = pd.concat([df]*10000) %timeit df.name.str.split(r"[\'\/\-\.]", expand=True)[0] 141 ms ± 1.8 ms per loop (mean ± std. dev. of 7 runs, 10 loops each) %timeit df.name.str.extract(r'(.*)[\'\/\-\.]', expand=False) 72.6 ms ± 397 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
方法1
您可以使用下面的正则表达式,它表示一个单词字符(a-z等)重复一次或多次。这将返回一个数组,您可以从中取出第一个元素。在
import re df['for_group'] = df['name'].apply(lambda x: re.findall(r"[\w]+", x)[0])
一种更快的正则表达式方法是使用.search(),正如@user3483203所指出的那样
.search()
方法2
同样,您可以使用:
df['for_group'] = df.name.str.split('\W+').apply(lambda x: x[0])
输出:
选项1><
{
方案2(最佳方案)
^{pr2}$str.extract
(我个人更喜欢这个,它会匹配,直到找到您想要的停止字符)第二个选择要快得多:
方法1
您可以使用下面的正则表达式,它表示一个单词字符(a-z等)重复一次或多次。这将返回一个数组,您可以从中取出第一个元素。在
一种更快的正则表达式方法是使用
^{pr2}$.search()
,正如@user3483203所指出的那样方法2
同样,您可以使用:
输出:
^{4}$相关问题 更多 >
编程相关推荐