首页 > 解决方案 > 如何在 Pandas(Python 3.x)中按第一个和最后一个找到的模式将一列分成两列

问题描述

我在将一列分成两列时遇到问题。我想按第一个和最后一个找到的模式“-”拆分列。也许这是微不足道的。

这是我的专栏:

        col1
0       aa-bb-cc-dd
1       aa-bb-cc
2       aa-bb-cc
3       aa-bb-cc-dd

这是我想要的框架:

        col1           col2
0       bb-cc          dd
1       bb             cc
2       bb             cc
3       bb-cc          dd

提前致谢!

标签: pythonstringpandasdataframesplit

解决方案


您可以使用列表推导:

df = pd.DataFrame([i.split('-', 1)[1].rsplit('-', 1) for i in df['col1']],
                  columns=['col1', 'col2'])

print(df)

    col1 col2
0  bb-cc   dd
1     bb   cc
2     bb   cc
3  bb-cc   dd

Pandasstr方法的存在主要是为了方便。对于干净的数据,您可能会发现列表理解对于较大的数据帧更有效。


推荐阅读