原数据样例:
|----|-------------------|----|
| 名字 | 技能 | 性别 |
| 张三 | 打篮球、打羽毛球、打乒乓球、打游戏 | 男 |
最后的结果:
|----|------|----|----|
| 名字 | 技能 | 性别 | 排序 |
| 张三 | 打篮球 | 男 | 1 |
| 张三 | 打羽毛球 | 男 | 2 |
| 张三 | 打乒乓球 | 男 | 3 |
| 张三 | 打游戏 | 男 | 4 |
1、读取csv文件数据
input_csv_file = 'data.csv'
output_csv_file = 'sorted_data_with_qualifications.csv'
# 读取CSV文件并处理数据
with open(input_csv_file, newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
header = next(reader) # 跳过表头
2、对数据中的某一个字段进行分组排序
原数据中第二列中是按照、分隔的。
sorted_data = []
for row in reader:
person = row[0]
qualifications = row[1].split('、') # 按顿号分割资质能力
sorted_qualifications = sorted(qualifications) # 对资质能力进行排序
for idx, qualification in enumerate(sorted_qualifications,start=1):
sorted_data.append([person, qualification, idx, row[2]]) # 添加序号和组别
3、结果保存到csv文件中
# 将处理后的数据写入新的CSV文件
with open(output_csv_file, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['','','']) # 写入新表头
for row in sorted_data:
writer.writerow(row) # 写入每行数据
完整代码
import csv
# 假设CSV文件名为"data.csv",我们将结果保存到"sorted_data_with_qualifications.csv"
input_csv_file = 'data.csv'
output_csv_file = 'sorted_data_with_qualifications.csv'
# 读取CSV文件并处理数据
with open(input_csv_file, newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
header = next(reader) # 跳过表头
sorted_data = []
for row in reader:
person = row[0]
qualifications = row[1].split('、') # 按顿号分割资质能力
sorted_qualifications = sorted(qualifications) # 对资质能力进行排序
for idx, qualification in enumerate(sorted_qualifications,start=1):
sorted_data.append([person,row[1], qualification, idx, row[2]]) # 添加序号和组别
# 将处理后的数据写入新的CSV文件
with open(output_csv_file, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['','','']) # 写入新表头
for row in sorted_data:
writer.writerow(row) # 写入每行数据
print(f"Sorted data with qualifications has been written to {output_csv_file}")