如何根据不同的字符(例如 '/- )从左开始对数据框中的字符串进行切片。 ,我只想要这个角色第一次出现。
key name
1 McDonald's
2 CVS/PHARMACY
3 CVS/Store
4 WAL-MART
5 AMAZON.CO
预期结果:
key name for_Group
1 McDonald's McDonald
2 CVS/PHARMACY CVS
3 CVS/Store CVS
4 WAL-MART WAL
5 AMAZON.CO AMAZON
我不确定这是否需要使用正则表达式?
最佳答案
选项 1
str.split
与 expand=True
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
(我个人比较喜欢这个,它匹配直到找到你想要的停止字符之一)
df.name.str.extract(r'(.*?)[\'\/\-\.]', expand=False)
0 McDonald
1 CVS
2 CVS
3 WAL
4 AMAZON
这里的第二个选项要快得多:
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)
关于python - 使用 Python Pandas 按不同字符切片字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50882796/