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

在GMP表中获取parameter1=x且parameter2=y时其他参数众值的单行结果

生成GMP表指定条件的众值汇总行

方案1:SQL实现

假设你的GMP表名为gmp_table,可以通过CTE分步计算每个参数的众值,再拼接成目标行:

-- 先筛选出符合条件的行
WITH target_rows AS (
    SELECT param3, param4, param5, ..., param20
    FROM gmp_table
    WHERE parameter1 = 'x' AND parameter2 = 'y'
),
-- 逐个参数计算众值(以param3为例,重复到param20)
param3_mode AS (
    SELECT param3
    FROM target_rows
    GROUP BY param3
    ORDER BY COUNT(*) DESC
    LIMIT 1
),
param4_mode AS (
    SELECT param4
    FROM target_rows
    GROUP BY param4
    ORDER BY COUNT(*) DESC
    LIMIT 1
),
-- ... 此处省略param5到param19的众值计算CTE
param20_mode AS (
    SELECT param20
    FROM target_rows
    GROUP BY param20
    ORDER BY COUNT(*) DESC
    LIMIT 1
)
-- 拼接最终结果行
SELECT 
    'x' AS parameter1,
    'y' AS parameter2,
    (SELECT param3 FROM param3_mode) AS param3,
    (SELECT param4 FROM param4_mode) AS param4,
    -- ... 依次添加param5到param19的取值
    (SELECT param20 FROM param20_mode) AS param20;

方案2:Python(Pandas)实现

如果用Python处理表格数据,Pandas库可以快速完成众值计算:

import pandas as pd

# 读取GMP表数据(根据实际存储格式调整,比如Excel用pd.read_excel)
df = pd.read_csv('gmp_table.csv')

# 筛选满足条件的行
filtered_df = df[(df['parameter1'] == 'x') & (df['parameter2'] == 'y')]

# 计算param3到param20的众值(若有多个众值,取第一个出现的)
mode_series = filtered_df.loc[:, 'param3':'param20'].mode().iloc[0]

# 构造结果行
result = pd.DataFrame({
    'parameter1': ['x'],
    'parameter2': ['y'],
    **mode_series.to_dict()
})

# 输出或保存结果
print(result)
# result.to_csv('gmp_summary_row.csv', index=False)

注意事项

  • 若某参数存在多个频率相同的众值,上述两种方案默认取排序/出现顺序的第一个,可根据需求修改逻辑(比如返回所有众值或自定义规则)。
  • 题目说明目标行的param3至param20均有值,无需处理空值情况;若实际存在空值,可在筛选或计算时添加WHERE paramX IS NOT NULL(SQL)或dropna()(Pandas)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:32:46