我希望通过创建一个循环访问现有字段并检查这些项目是否存在的功能来提高产品Feed中列出的某些项目的标题说明的质量。
如果该列中的值不存在,我希望将该项目添加到标题开头的现有标题中。
到目前为止,我已经尝试了多种方法,包括使用布尔值来查看该值是true还是false。但是,在此之后,我将无法使用它遍历每一行并在字符串为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
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)
此刻,我收到以下错误消息:
“ SyntaxError:语法无效”
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
如果标题中当前存在该品牌(顺序无关紧要),然后如果没有该商标,我如何逐行检查?
理想情况下,我想复制颜色和/或将来可能添加到数据框中的任何其他列的过程。
答案 0 :(得分:0)
使用这样的东西可能会带来更好的运气。我注意到您在那里进行了一些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)