首页 > 解决方案 > 从一列拆分字符串并在python中创建一个新列

问题描述

我有一个数据-

data = [['0092', 'ab cd [1]'], ['887', 'ab ef [2]'], ['776', 'ab gh ab [3]'], 
        ['33101', 'ab ij [4]'], ['0922', 'ab kl [5]']]
df = pd.DataFrame(data, columns = ('col_1', 'col_2'))
df

   col_1    col_2
    0092    ab cd [1]
    887     ab ef [2]
    776     ab gh ab [3]
    33101   ab ij [4]
    0922    ab kl [5]

我想拆分 col_2 并创建一个新列,其中“ab cd”是一个名称,1 是它的代码。

       col_1     col_2    col_3
        0092    ab cd       1
        887     ab ef       2
        776     ab gh ab    3
        33101   ab ij       4
        0922    ab kl       5

我已经尝试过了 -df['col_2'].str.split(" ", expand = True)但它没有达到我的目的,因为它没有根据空间出现准确地拆分名称。所以我想把名字从开始的字母拆分到“[”,然后根据拆分创建一个新列。如果您有更好的建议(代码行更少),请帮我编写代码

标签: python

解决方案


我们可以str.extract在这里使用:

df["col_3"] = df["col_2"].str.extract(r'^.*\[(\d+)\]')
df["col_2"] = df["col_2"].str.extract(r'^(.*?)(?=\s*(?:\[\d+\]|$))')

推荐阅读