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

需求:按Key分组统计code列存在差异字符的分组并生成新DataFrame

按Key前缀分组判断code差异并统计结果

首先给出原始数据:

import pandas as pd

# 初始化数据
data = {'Key': ['111*1', '111*2','111*3', '222*1','222*2', '333*1','333*2', '333*3','333*4', '444*1'],
        'code': ['S', 'S','Q', 'M','M', 'F','F', 'F','N', 'C']}
  
# 创建DataFrame
df = pd.DataFrame(data)

实现步骤

  1. 提取分组标识:从Key列中提取前缀(如111*)作为分组依据,新增group_key列:
df['group_key'] = df['Key'].str.split('*').str[0] + '*'
  1. 循环处理每个分组:
# 获取所有唯一分组
unique_groups = df['group_key'].unique()
# 存储符合条件的分组信息
qualified_groups = []
count = 0

for group in unique_groups:
    # 取出当前分组的所有code值
    group_codes = df[df['group_key'] == group]['code']
    # 判断分组内code是否存在差异:唯一值数量大于1则说明有差异
    if len(group_codes.unique()) > 1:
        count += 1
        qualified_groups.append({'group_key': group, 'code_values': list(group_codes)})

# 输出统计结果
print(f"符合条件的分组总数:{count}")
# 生成包含目标分组的新DataFrame
result_df = pd.DataFrame(qualified_groups)
print(result_df)

运行结果

符合条件的分组总数为2,生成的新DataFrame如下:

group_key       code_values
0     111*        [S, S, Q]
1     333*  [F, F, F, N]

逻辑说明

  • 分组111*的code包含S、Q两种不同值,存在差异,计入统计;
  • 分组222*的code全为M,无差异,不计入;
  • 分组333*的code包含F、N两种不同值,存在差异,计入统计;
  • 分组444*仅单个code值,无差异,不计入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:41:35