猿问

如果列字符串值是另一列的子字符串,如何替换它

如何使用另一列替换列的部分字符串值。


我这里的数据集是:


ID          Product Name                            Size ID    Size Name

1   24 Mantra Ancient Grains Foxtail Millet 500 gm      1       500 gm

2   24 Mantra Ancient Grains Little Millet 500 gm       2       500 gm

3   24 Mantra Naturals Almonds 100 gm                   3       100 gm

4   24 Mantra Naturals Kismis 100 gm                    4       100 gm

5   24 Mantra Organic Ajwain 100 gm                     5       100 gm

6   24 Mantra Organic Apple Blast Drink 250 ml          6       250 ml

7   24 Mantra Organic Apple Juice 1 Ltr Tetra Pack      7       1000 ml

8   24 Mantra Organic Apple Juice 200 ml                8       200 ml

9   24 Mantra Organic Assam Tea 100 gm                  9       100 gm

这里的要求是Product Name列值是24 Mantra Ancient Grains Foxtail Millet 500 gm,Size Name列有500 Gm。在这种情况下,我的输出将是24 Mantra Ancient Grains Foxtail Millet. 如果Size Name包含在Product Name字符串中删除大小名称字忽略大小写否则无需采取任何行动。


噜噜哒
浏览 188回答 3
3回答

精慕HU

IIUC,您可以使用apply()和replace():df['Product Name'] = df.apply(lambda x: x['Product Name'].replace(x['Size Name'], '').strip(), axis=1)产量:   ID                                    Product Name  Size ID Size Name0   1         24 Mantra Ancient Grains Foxtail Millet        1    500 gm1   2          24 Mantra Ancient Grains Little Millet        2    500 gm2   3                      24 Mantra Naturals Almonds        3    100 gm3   4                       24 Mantra Naturals Kismis        4    100 gm4   5                        24 Mantra Organic Ajwain        5    100 gm5   6             24 Mantra Organic Apple Blast Drink        6    250 ml6   7  24 Mantra Organic Apple Juice 1 Ltr Tetra Pack        7   1000 ml7   8                   24 Mantra Organic Apple Juice        8    200 ml8   9                     24 Mantra Organic Assam Tea        9    100 gm

慕哥6287543

假设您想用 None 替换 Size Name 值,如果它们是 Product Name 的子字符串df = pd.DataFrame({            'Product Name' : ['24 Mantra Ancient Grains Foxtail Millet 500 gm', '24 Mantra Ancient Grains Little Millet 500 gm ', '24 Mantra Naturals Kismis 100 gm'],             'Size ID' : [1, 2, 3],            'Size Name': ['500 gm', '500 gm', '200 gm']        })df['same']= df.apply(lambda x: x['Size Name'] in x['Product Name'], axis = 1)df['Size Name'] = np.where(df['same'], None, df['Size Name'])df.drop(columns=['same'], inplace = True)df  Product Name                                Size ID      Size Name0   24 Mantra Ancient Grains Foxtail Millet 500 gm  1              None1   24 Mantra Ancient Grains Little Millet 500 gm   2              None2   24 Mantra Naturals Kismis 100 gm                3              200 gm
随时随地看视频慕课网APP

相关分类

Python
我要回答