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

如何用SQL统计同一行多列中各值的出现次数?

实现行内多列值的频次统计

问题说明

给定如下数据集:

COL1COL2COL3
ABA
CDC

需要统计每行多列中每个值的出现次数,预期输出:

2A 1B and 
2C 1D

实现方法(Python + Pandas)

用Pandas可以快速实现行内频次统计,代码如下:

import pandas as pd

# 构造数据集(实际场景可替换为读取Excel/CSV文件)
data = {
    "COL1": ["A", "C"],
    "COL2": ["B", "D"],
    "COL3": ["A", "C"]
}
df = pd.DataFrame(data)

# 定义行处理函数
def process_single_row(row):
    # 统计当前行各值的出现次数
    value_counts = row.value_counts().sort_index()
    # 拼接成"次数+值"的格式
    result_parts = [f"{count}{value}" for value, count in value_counts.items()]
    # 按预期格式调整(第一行末尾加"and")
    if row.name == 0:
        return " ".join(result_parts) + " and "
    return " ".join(result_parts)

# 应用函数到每一行
output_lines = df.apply(process_single_row, axis=1)

# 打印结果
for line in output_lines:
    print(line)

代码解释

  1. 数据构造/读取:用字典构造示例数据,实际使用时可通过pd.read_excel()或pd.read_csv()读取外部表格
  2. 行处理函数:
    • row.value_counts():统计当前行每个值的出现次数
    • sort_index():保证结果按值的字母顺序排列(和示例一致)
    • 列表推导式将频次和值拼接为指定格式的字符串
    • 根据行索引判断是否添加"and",匹配预期输出格式
  3. 结果输出:遍历处理后的结果,逐行打印

备选方案(Excel公式)

如果用Excel处理,可针对每行写嵌套公式,以第一行为例:

  • 统计A的次数:=COUNTIF(A2:C2,"A")
  • 拼接为2A:=COUNTIF(A2:C2,"A")&"A"
  • 组合所有结果:=COUNTIF(A2:C2,"A")&"A"&" "&COUNTIF(A2:C2,"B")&"B"&" and "
    这种方法适合小数据集,数据量大时不如代码高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:45:15