Pandas 按数据帧中的分隔符将列拆分为未知数量的列

Pandas 按数据帧中的分隔符将列拆分为未知数量的列,pandas,Pandas,我有一个带字符串分隔符“+”的表 我想以这种格式返回 ID Products Product 1 Product 2 Product 3 Product 4 Product 5 product... 1 A + B + C + D + E ... A B C D E ... 2 A + F + G A

我有一个带字符串分隔符“+”的表

我想以这种格式返回

ID  Products                 Product 1  Product 2  Product 3 Product 4 Product 5 product... 
1   A + B + C + D + E ...      A           B          C          D          E       ...
2   A + F + G                  A           F          G
3   X + D                      X           D
1   D + C + C + D + E          D           C          C          D          E      
我如何在熊猫数据帧中重现这一点

与regex一起使用
'\s++\s++'
-它表示一个或多个空格、转义的
++
、一个或多个空格,然后更改列名,最后添加到原始列:

如有必要,还可以更改列名:

d = lambda x: f'Product{x+1}'
df = (df.join(df['Products'].str.split('\s+\+\s+', expand=True)
                            .rename(columns=d)
                            .fillna('')))
print (df)
   ID           Products Product1 Product2 Product3 Product4 Product5
0   1  A + B + C + D + E        A        B        C        D        E
1   2          A + F + G        A        F        G                  
2   3              X + D        X        D                               
df1 = df['Products'].str.split('\s+\+\s+', expand=True).add_prefix('Product').fillna('')
df = df.join(df1)
print (df)
   ID           Products Product0 Product1 Product2 Product3 Product4
0   1  A + B + C + D + E        A        B        C        D        E
1   2          A + F + G        A        F        G                  
2   3              X + D        X        D                       
d = lambda x: f'Product{x+1}'
df = (df.join(df['Products'].str.split('\s+\+\s+', expand=True)
                            .rename(columns=d)
                            .fillna('')))
print (df)
   ID           Products Product1 Product2 Product3 Product4 Product5
0   1  A + B + C + D + E        A        B        C        D        E
1   2          A + F + G        A        F        G                  
2   3              X + D        X        D