检查df["A"]是否有指定list的值

37 阅读1分钟

原始错误写法:


 df.loc[df["商品标题"].contains(brands),"spec_arg"]=1.05

在 Pandas 中,DataFrame 的列对象(Series)没有直接的 contains 方法。可以使用 str.contains() 方法来检查字符串中是否包含特定的子串。这里有几种可能的解决方案

假设想要在 "商品标题" 列中检查是否包含某些品牌名称,并在符合条件的行中将 "spec_arg" 列设为 2,可以按照以下方式操作:

方法一:使用 str.contains()

import pandas as pd

# 示例数据
data = {'商品标题': ['苹果手机', '华为手机', '小米电视', '苹果电脑', '三星冰箱']}
df = pd.DataFrame(data)

# 要匹配的品牌列表
brands = ['苹果', '华为']

# 使用 str.contains() 检查是否包含品牌名称,并设置 spec_arg 列
df.loc[df['商品标题'].str.contains('|'.join(brands)), 'spec_arg'] = 2

print(df)

方法二:使用 apply 和 lambda 函数

import pandas as pd

# 示例数据
data = {'商品标题': ['苹果手机', '华为手机', '小米电视', '苹果电脑', '三星冰箱']}
df = pd.DataFrame(data)

# 要匹配的品牌列表
brands = ['苹果', '华为']

# 使用 apply 和 lambda 函数检查是否包含品牌名称,并设置 spec_arg 列
df['spec_arg'] = df['商品标题'].apply(lambda x: 2 if any(brand in x for brand in brands) else None)

print(df)

这两种方法都能实现在 "商品标题" 列中检查是否包含指定品牌名称,并在符合条件的行中将 "spec_arg" 列设为 2。选择方法取决于需求和数据处理习惯。