pd.DataFrame(
[x.rsplit('|', 1) for x in df['col1'].tolist()],
columns=['col1', 'col2']
)
col1 col2
0 MLB|NBA NFL
1 MLB NBA
2 NFL|NHL|NBA MLB
型 PS:是的,第二个解决方案更快:
df = pd.concat([df] * 100000, ignore_index=True)
%timeit df['col1'].str.rsplit('|', n=1, expand=True)
%timeit pd.DataFrame([x.rsplit('|', 1) for x in df['col1'].tolist()])
473 ms ± 13.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
128 ms ± 1.29 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
1条答案
按热度按时间pgvzfuti1#
使用
Series.str.rsplit
,限制拆分的数量。字符串
如果上面的代码抛出一个SyntaxError,这意味着你使用的Python版本比3.6旧(你真可耻!)。
型
还有更快的loopy
str.rsplit
等价物。型
PS:是的,第二个解决方案更快:
型