Power BI中如何按行统计多列重复值并按Index列分组处理
解决方案
Python Pandas 实现(适合大数据量场景)
核心思路是按Index分组后,先对相邻的A1、A2做去重,再对后续列全局去重,保证最终结果仅保留符合规则的唯一值,代码示例如下:
import pandas as pd # 替换下方路径为你的本地文件路径,支持csv、xlsx等格式 df = pd.read_excel("你的数据文件路径.xlsx") def process_single_group(group): # 提取当前分组A1~A4的数值 col_list = ["A1", "A2", "A3", "A4"] val_list = group[col_list].iloc[0].tolist() processed = [] # 处理A1与A2的相邻去重规则 if val_list[0] == val_list[1]: processed.append(val_list[0]) else: processed.extend([val_list[0], val_list[1]]) # 处理A3、A4,仅新增未出现过的数值 for v in val_list[2:]: if v not in processed: processed.append(v) # 补全空值保证输出为4列,可根据需要修改补位值 return pd.Series(processed + [pd.NA] * (4 - len(processed)), index=col_list) # 执行分组处理 output_df = df.groupby("Index", as_index=False).apply(process_single_group) # 导出结果到本地文件 output_df.to_excel("处理后结果.xlsx", index=False)
Excel Power Query 实现(适合小数据集快速操作)
无需写复杂代码,通过界面操作即可完成:
- 选中你的数据区域,点击「数据」选项卡→「从表格/区域」,导入Power Query编辑器
- 点击「转换」选项卡→「分组依据」,分组列选
Index,新列名自定义,操作选「所有行」,点击确定 - 点击「添加列」→「自定义列」,输入如下公式(替换公式里的
分组表为你上一步自定义的新列名):let current_row = Table.First([分组表]), a1_val = current_row[A1], a2_val = current_row[A2], first_part = if a1_val = a2_val then {a1_val} else {a1_val, a2_val}, add_a3 = if not List.Contains(first_part, current_row[A3]) then first_part & {current_row[A3]} else first_part, add_a4 = if not List.Contains(add_a3, current_row[A4]) then add_a3 & {current_row[A4]} else add_a3 in add_a4 - 点击自定义列右上角的展开按钮,选择「扩展到新行」,再按Index分组把值转成多列即可导出到Excel工作表。
内容的提问来源于stack exchange,提问作者farrukh jamal
相关产品推荐
相关产品推荐

