pandas 由最后一个分隔符分割

编程入门 行业动态 更新时间:2024-10-25 12:26:07
本文介绍了 pandas 由最后一个分隔符分割的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在数据框中具有不同输出的以下列"

I have the following column in a dataframe with different outputs"

col1 MLB|NBA|NFL MLB|NBA NFL|NHL|NBA|MLB

我想始终使用split函数按最后一个管道拆分列,如下所示:

I would like to use the split function to split the column by the last pipe always so something like this:

col1 col2 MLB|NBA NFL MLB NBA NFL|NHL|NBA MLB

推荐答案

使用Series.str.rsplit,限制拆分次数.

df.col1.str.rsplit('|', 1, expand=True).rename(lambda x: f'col{x + 1}', axis=1)

如果以上内容引发了SyntaxError错误,则意味着您使用的Python版本早于3.6(可耻!).改用

If the above throws you a SyntaxError, it means you're on a python version older than 3.6 (shame on you!). Use instead

df.col1.str.rsplit('|', 1, expand=True)\ .rename(columns=lambda x: 'col{}'.format(x + 1)) col1 col2 0 MLB|NBA NFL 1 MLB NBA 2 NFL|NHL|NBA MLB

还有更快的循环str.rsplit等效项.

There's also the faster loopy str.rsplit equivalent.

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

P.S.,是的,第二种解决方案更快:

P.S., yes, the second solution is faster:

df = pd.concat([df] * 100000, ignore_index=True) %timeit df.col1.str.rsplit('|', 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)

更多推荐

pandas 由最后一个分隔符分割

本文发布于:2023-10-16 10:22:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1497295.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分隔符   pandas

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!