You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计Pandas DataFrame列值中指定品牌列表元素数量

用Pandas统计指定品牌在字符串中的出现数量

需要统计指定品牌列表brand_List = ["Brand1", "Brand2", "Brand3"]中的品牌,在DataFrame的Col_1列各字符串内出现的不同品牌数量,生成结果列Desired_Col_2。示例数据与预期输出如下:

Col_1Desired_Col_2
Brand1_bla_Brand22
Brand31
bla_bla0
Brand2_Brand32
Brand2_Brand3_Brand13

解决方案

方法一:直观遍历法(适合小数据集)

先导入Pandas并构造示例数据,再通过apply遍历每行字符串,统计符合条件的品牌数量:

import pandas as pd

# 构造示例DataFrame
data = {
    "Col_1": ["Brand1_bla_Brand2", "Brand3", "bla_bla", "Brand2_Brand3", "Brand2_Brand3_Brand1"]
}
df = pd.DataFrame(data)
brand_List = ["Brand1", "Brand2", "Brand3"]

# 定义统计函数:检查每个品牌是否在当前字符串中,统计总数
def count_brands(text):
    return sum(1 for brand in brand_List if brand in text)

# 生成结果列
df["Desired_Col_2"] = df["Col_1"].apply(count_brands)

方法二:矢量化操作法(适合大数据集)

利用Pandas的矢量化字符串操作,避免逐行循环,效率更高:

import pandas as pd

# 构造示例DataFrame
data = {
    "Col_1": ["Brand1_bla_Brand2", "Brand3", "bla_bla", "Brand2_Brand3", "Brand2_Brand3_Brand1"]
}
df = pd.DataFrame(data)
brand_List = ["Brand1", "Brand2", "Brand3"]

# 对每个品牌生成布尔值Series,再按列求和得到每行的品牌数量
brand_masks = [df["Col_1"].str.contains(brand) for brand in brand_List]
df["Desired_Col_2"] = pd.concat(brand_masks, axis=1).sum(axis=1)

执行上述代码后,df会新增Desired_Col_2列,结果与示例完全一致。

内容的提问来源于stack exchange,提问作者Alexandra Morel-Fonteray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 07:02:49