如何对CSV文件中同一名称对应的数据行进行分组展示?
按CSV指定列分组展示数据(统一名称格式)
针对你需要将CSV中column2列相同名称的行分组展示的需求,同时处理名称中存在的标点差异(如vel.和vel视为同一名称),可以用以下两种方法实现:
方法1:使用Pandas(推荐,适合数据量较大的情况)
Pandas是Python的数据分析库,处理分组操作非常便捷。
- 先安装Pandas(如果未安装):
pip install pandas
- 编写处理代码:
import pandas as pd # 读取CSV文件,适配多空格分隔的格式 df = pd.read_csv('your_file.csv', sep='\s+') # 统一column2的名称格式:去除所有标点符号并去除首尾空格 df['column 2'] = df['column 2'].str.replace(r'[^\w\s]', '', regex=True).str.strip() # 按处理后的名称分组并输出 for group_name, group_data in df.groupby('column 2'): # 逐行输出分组内的数据 for _, row in group_data.iterrows(): print(f"{row['column 1']} -- {group_name} -- {row['column 3']}") # 分组之间添加空行分隔 print()
方法2:纯Python实现(无需额外安装库)
如果不想依赖第三方库,可以用Python标准库完成:
import csv from collections import defaultdict # 初始化分组存储结构 name_groups = defaultdict(list) # 读取并处理CSV文件 with open('your_file.csv', 'r', encoding='utf-8') as file: # 适配多空格分隔的读取方式 csv_reader = csv.reader(file, delimiter=' ', skipinitialspace=True) # 跳过表头行 next(csv_reader) for row in csv_reader: # 处理名称:去除点号并去空格(可根据实际需求调整标点处理规则) cleaned_name = row[1].replace('.', '').strip() # 将行数据加入对应分组 name_groups[cleaned_name].append(row) # 遍历分组并输出结果 for name, rows in name_groups.items(): for row in rows: print(f"{row[0]} -- {name} -- {row[2]}") print()
说明
- 两种方法都会先统一
column2的名称格式(比如把vel.转为vel,h.转为h),确保同名数据被正确分组。 - 输出格式完全匹配你给出的示例,分组之间用空行分隔。
内容的提问来源于stack exchange,提问作者Tarush Laddha
相关产品推荐
相关产品推荐

