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