猿问

熊猫由最后一个分隔符分割

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


col1

MLB|NBA|NFL

MLB|NBA

NFL|NHL|NBA|MLB

我想一直使用split函数通过最后一个管道将列拆分,因此如下所示:


col1           col2

MLB|NBA        NFL

MLB            NBA

NFL|NHL|NBA    MLB


米琪卡哇伊
浏览 164回答 1
1回答

紫衣仙女

使用Series.str.rsplit,限制分割数。df.col1.str.rsplit('|', 1, expand=True).rename(lambda x: f'col{x + 1}', axis=1)如果上述情况引发了SyntaxError,则意味着您使用的Python版本早于3.6(可耻!)。改用df.col1.str.rsplit('|', 1, expand=True)\  .rename(columns=lambda x: 'col{}'.format(x + 1))          col1 col20      MLB|NBA  NFL1          MLB  NBA2  NFL|NHL|NBA  MLB还有更快的循环str.rsplit等效项。pd.DataFrame(    [x.rsplit('|', 1) for x in df.col1.tolist()],     columns=['col1', 'col2'])           col1 col20      MLB|NBA  NFL1          MLB  NBA2  NFL|NHL|NBA  MLBPS,是的,第二种解决方案更快: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)
随时随地看视频慕课网APP

相关分类

Python
我要回答