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

Pandas如何输出同一主类别下跨子类别重复的字符串值

解决方案

用pandas即可完成需求,核心逻辑是统计每个主类别下每个字符串对应的不同子类别的数量,筛选出符合多子类别出现要求的字符串后按格式输出即可。

完整可运行代码

import pandas as pd

# 构造示例数据,你可以替换成自己的df读取代码
df = pd.DataFrame({
    'CAT A': ['A1','A1','A1','A1','A1','A1','A2','A2','A2','A2','A2','A2'],
    'CAT B': ['B1','B1','B1','B2','B2','B2','B1','B1','B1','B2','B2','B2'],
    'Strings': ['String1','String2','String3','String4','String5','String1','String1','String2','String3','String4','String5','String6']
})

# 1. 统计每个【主类别+字符串】组合对应的不同子类别数量
str_subcat_count = df.groupby(['CAT A', 'Strings'])['CAT B'].nunique().reset_index(name='subcat_count')

# 2. 筛选出在至少2个子类别中出现的字符串
# 如果你要求字符串必须在该主类别的所有子类别中都出现,可把>=2改成==对应主类别的子类别总数
multi_occur_str = str_subcat_count[str_subcat_count['subcat_count'] >= 2]

# 3. 按要求格式输出
for main_cat in df['CAT A'].unique():
    print(main_cat)
    sub_cats = ' and '.join(df[df['CAT A'] == main_cat]['CAT B'].unique())
    print(f'Repeated strings in {sub_cats}')
    matched_str = multi_occur_str[multi_occur_str['CAT A'] == main_cat]['Strings'].tolist()
    if not matched_str:
        print('None')
    else:
        for s in matched_str:
            print(f'"{s}"')
    print('\n---\n')

输出结果和你给出的期望完全一致:

A1
Repeated strings in B1 and B2
"String1"

---

A2
Repeated strings in B1 and B2
None

---

内容的提问来源于stack exchange,提问作者Damon Obako

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 20:06:02