如果一列中的值是另一列中值的子字符串,则检查rowbyrow,如果布尔值=Fals,则追加字符串

2024-06-15 03:10:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望通过创建一个函数来提高产品提要中列出的某些项的标题描述的质量,该函数循环遍历现有字段并检查这些项是否存在

如果列中的值不存在,我希望将该项附加到标题开头的现有标题中

到目前为止,我已经尝试了多种方法,包括使用布尔值来查看值是真是假。然而,超过这一点,我无法使用它来循环每一行,如果为FALSE,则追加字符串

以下是一些示例数据:

import pandas as pd
feed = pd.read_csv(r'...feed.csv')
cols = ['title', 'color', 'brand']
df = feed.loc[:,cols]

输出

title   color   brand
0   Testy Black Jumper  black   Testy
1   White T-Shirt   white   Testy_New
2   Testy Red Jacket    red Testy
3   Trousers    green   Testy

尝试1(不起作用)

def brand_checker(df):
    for row in df:
        if row in df[~df['title'].isin(df['brand']):
            m = df.filter(like='title').apply(lambda x: x.str.contains(str(df['brand'])), axis=1).all(axis=1)
            df['new_title'] = np.where(m, df['title'], df['brand'] + " " + df['title'])
        else:
            pass
    return df

df2 = brand_checker(df)
df.head(3)

目前,我收到以下错误消息:

“语法错误:无效语法”

预期产量:

title   color   brand
0   Testy Black Jumper  black   Testy
1   Testy White T-Shirt white   Testy
2   Testy_New Red Jacket    red Testy_New
3   Testy Trousers  green   Testy

我怎样才能逐行检查标题中是否存在品牌(顺序无关紧要),如果不存在则追加到开头

理想情况下,我希望复制颜色和/或任何其他列的过程,这些列将来可能会添加到dataframe中


Tags: csv函数标题dfnewtitlefeedcolor
1条回答
网友
1楼 · 发布于 2024-06-15 03:10:13

你可能会有更好的运气与这样的事情。我注意到你有一些str转换正在进行中,所以如果你的数据类型还不是str,你可能需要添加一些转换到这个


def brand_checker(df):
    for x in range(len(df.iloc[:])):
        if df.iloc[x,2] not in df.iloc[x,0]:
           df.iloc[x,2] = df.iloc[x,2] + " " + df.iloc[x,0]
    return df

df2 = brand_checker(df)
df.head(3)

相关问题 更多 >