python - 使用 Python Pandas 按不同字符切片字符串

标签 python regex pandas

如何根据不同的字符(例如 '/- )从左开始对数据框中的字符串进行切片。 ,我只想要这个角色第一次出现。

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.splitexpand=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/

相关文章:

python - 归并排序算法的难点

python - 从数据帧中删除连续的 asc/desc 序列

python - 效率: Check if value in Pandas DataFrame has changed with an specific threshold

python - 如何将数据框行转换为标题?

python - Cmake:找不到 Python 2.7

python - 我的重新排列数组使得 arr[i] = i 的代码有什么问题?

java - 模式匹配器 IllegalStateException

python - 如何使用 python 中的正则表达式检查两个查询字符串(带通配符)是否存在

java 仅替换正则表达式 a-z0-9

python : How to use Multinomial Logistic Regression using SKlearn