如何按CSV文件A列相同值分组,用短横线连接B列值?
没问题,我来给你几种实用的实现方案,你可以根据自己熟悉的工具来选择:
方法一:用Python实现(最灵活)
如果你会写代码,Python是最灵活的选择,这里给你两种方式:
方式1:用Pandas库(简洁高效)
Pandas处理分组和拼接非常方便,代码如下:
import pandas as pd # 替换成你的CSV文件路径 df = pd.read_csv("your_data.csv", names=["A", "B", "C"]) # 按A列分组,将每组的B列值转为字符串后用"-"连接 result = df.groupby("A")["B"].apply(lambda x: "-".join(x.astype(str))).tolist() print(result) # 输出正好是你要的格式:['2-257-258-8-260', '24-26-234', '14-22-78']
方式2:用Python标准库(无需额外安装)
如果不想安装Pandas,用自带的csv和collections模块也能实现:
import csv from collections import defaultdict # 用来存储每个A值对应的B列列表 grouped_b = defaultdict(list) # 读取CSV文件 with open("your_data.csv", "r") as file: csv_reader = csv.reader(file) for row in csv_reader: a_value = row[0] b_value = row[1] grouped_b[a_value].append(b_value) # 拼接每组的B值 final_result = ["-".join(b_list) for b_list in grouped_b.values()] print(final_result)
方法二:用Excel实现(适合非代码场景)
如果你习惯用Excel,可以用Power Query或者数组公式来完成:
方式1:Power Query(可视化操作)
- 打开Excel,点击「数据」选项卡 → 「自文本/CSV」,导入你的CSV文件
- 在Power Query编辑器中,选中A列 → 点击「转换」选项卡 → 「分组依据」
- 分组设置:新列名填「合并B列」,操作选择「所有行」,点击确定
- 点击新列右侧的展开按钮 → 选择「提取值」,分隔符选「-」,点击确定
- 最后点击「关闭并上载」,就能得到分组后的拼接结果,再手动整理成你要的数组格式即可
方式2:Excel 365数组公式
如果你的Excel是365版本,可以直接用公式实现:
假设数据在A1:C10区域,输入以下公式(按回车即可,无需Ctrl+Shift+Enter):
=BYROW(UNIQUE(A:A), LAMBDA(x, TEXTJOIN("-", TRUE, FILTER(B:B, A:A=x))))
公式会自动生成每个A值对应的B列拼接结果,之后你可以用TEXTJOIN把这些结果包装成你要的数组字符串。
方法三:用命令行工具awk实现(适合Linux/macOS用户)
如果你熟悉终端命令,用awk可以快速处理:
# 先输出分组拼接后的内容 awk -F',' '{arr[$1] = arr[$1] (arr[$1] ? "-" : "") $2} END {for (key in arr) print arr[key]}' your_data.csv
如果要直接输出你要的数组格式,用这个命令:
awk -F',' '{arr[$1] = arr[$1] (arr[$1] ? "-" : "") $2} END {printf "["; first=1; for (key in arr) {if (!first) printf ", "; printf "\"%s\"", arr[key]; first=0} printf "]\n"}' your_data.csv
内容的提问来源于stack exchange,提问作者Mohammad Kazemi-Beydokhti
相关产品推荐
相关产品推荐

