Python 如果一列中的值作为另一列中的值的子字符串出现,则逐行检查,如果布尔值=False,则追加字符串

Python 如果一列中的值作为另一列中的值的子字符串出现,则逐行检查,如果布尔值=False,则追加字符串,python,pandas,Python,Pandas,我希望通过创建一个函数,在现有字段中循环并检查这些项目是否存在,从而提高产品提要中列出的某些项目的标题描述的质量 如果列中的值不存在,我希望将该项附加到标题开头的现有标题中 到目前为止,我已经尝试了多种方法,包括使用布尔值来查看值是真是假。然而,超出这一点,我无法使用它循环每一行,如果为FALSE,则追加字符串 以下是一些示例数据: 将熊猫作为pd导入 feed=pd.read\u csv(r'…feed.csv') cols=[“标题”、“颜色”、“品牌”] df=feed.loc[:,col

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

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

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

以下是一些示例数据:

将熊猫作为pd导入
feed=pd.read\u csv(r'…feed.csv')
cols=[“标题”、“颜色”、“品牌”]
df=feed.loc[:,cols]
输出
标题颜色品牌
0易怒的黑色跳线黑色易怒
1件白色T恤白色Testy_新款
2件易怒的红色夹克红色易怒的
3条裤子,绿色,易怒
尝试1(不起作用) def品牌检测器(df): 对于df中的行: 如果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.其中(m,df['title'],df['brand']+“”+df['title'])) 其他: 通过 返回df df2=品牌检查器(df) 测向头(3) 目前,我收到以下错误消息:

“SyntaxError:无效语法”

预期产出:
标题颜色品牌
0易怒的黑色跳线黑色易怒
1件易怒的白色T恤白色易怒的
2件易怒的新红色夹克红色易怒的新
3条易怒的裤子绿色易怒
我如何才能逐行检查标题中是否存在品牌(顺序不重要),如果没有,如何将其附加到开始


理想情况下,我希望为颜色和/或将来可能添加到数据帧中的任何其他列复制此过程。

您可能会有更好的运气使用类似的内容。我注意到您在其中进行了一些str转换,因此如果您的数据类型还不是str,您可能需要为此添加一些转换


def品牌检测器(df):
对于范围内的x(len(df.iloc[:]):
如果df.iloc[x,2]不在df.iloc[x,0]中:
df.iloc[x,2]=df.iloc[x,2]+“”+df.iloc[x,0]
返回df
df2=品牌检查器(df)
测向头(3)

@slr1337这对我来说是有意义的,但是,当我执行代码时,我得到了“KeyError:0”……你能想想为什么会出现此错误吗?这与你的数据有关。Key error 0表示没有0键。你的数据本身可能有问题。请尝试添加print(df)在循环之前,查看打印的内容。我不熟悉pandas,因此这可能也是问题所在。尝试使用df.iloc[[x],[0]]