PowerBI中生成Final Naiming列:按Contract ID合并唯一Detailed Name
实现合同条款合并生成Final Naiming列的解决方案
Python Pandas 实现
如果用Python处理表格数据,Pandas是最便捷的工具,以下是具体代码:
import pandas as pd # 示例数据(实际可通过pd.read_csv/pd.read_excel读取你的数据源) df = pd.DataFrame({ 'Contract ID': ['Contract 1', 'Contract 1', 'Contract 1', 'Contract 2', 'Contract 3', 'Contract 3', 'Contract 3', 'Contract 3'], 'Detailed Name': ['1.1', '1.1', '1.2', '1.1', '1.1', '1.2', '1.3', '1.4'] }) # 1. 按合同ID分组,提取每组唯一的条款并拼接成字符串 unique_clauses = df.groupby('Contract ID')['Detailed Name'].unique().apply(lambda clauses: ', '.join(clauses)) # 2. 生成符合格式的Final Naiming final_naming_map = unique_clauses.apply(lambda x: f"{unique_clauses.name} ({x})") # 3. 将结果映射回原数据集的每一行 df['Final Naiming'] = df['Contract ID'].map(final_naming_map) # 查看结果 print(df)
代码逻辑说明:
- 分组后用
unique()去重每个合同下的条款,避免重复拼接 - 用
join()把去重后的条款拼接成逗号分隔的字符串 - 通过
map()将每个合同对应的命名结果批量填充到原数据的每一行
SQL 实现(以MySQL为例)
如果你的数据存储在数据库中,可以用SQL直接查询生成目标列:
SELECT t1.`Contract ID`, t1.`Detailed Name`, CONCAT( t1.`Contract ID`, ' (', GROUP_CONCAT(DISTINCT t2.`Detailed Name` SEPARATOR ', '), ')' ) AS `Final Naiming` FROM your_table t1 INNER JOIN your_table t2 ON t1.`Contract ID` = t2.`Contract ID` GROUP BY t1.`Contract ID`, t1.`Detailed Name`;
SQL逻辑说明:
- 自连接表获取同一合同下的所有条款记录
GROUP_CONCAT(DISTINCT ...)去重并拼接条款字符串CONCAT()组合合同ID和拼接后的条款,生成目标格式
内容的提问来源于stack exchange,提问作者GiorgioP_D
相关产品推荐
相关产品推荐

