用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

将规范化的一对多单行数据转成1对1单行数据(全部代码)

2020-09-23 作者:云代码会员举报

[python]代码库

import random
import csv

# 生成随机csv表文件,做实验用
def gen_csv(filename):
	# csv文件数据
	datas = []
	# csv文件表头
	data_header = ['组名']
	# 每一组最多可以有10个组员
	for i in range(10):
		data_header.append('组员'+str(i))
	# 先加表头
	datas.append(data_header)
	# 有10行数据
	for i in range(10):
		# 这一行数据
		row_data = []
		row_data.append('组'+str(i))
		# 组员数量随机
		for j in range(random.randint(3, 10)):
			# 组员名称随机
			row_data.append(str(random.randint(0, 1000)))
		# 向表中添加数据行
		datas.append(row_data)
	print('您生成了数据')
	print(datas)
	# 写出csv文件
	with open(filename, 'w', newline='') as f:
		writer = csv.writer(f)
		for row in datas:
			writer.writerow(row)
	print('生成模拟表')

# 将组信息csv文件转换为2列状的csv文件
def from_csv_to_2col_csv(filename):
	# 读入csv文件转换出组信息列表
	with open(filename) as f:
		reader = csv.reader(f)
		groups = list(reader)
	# 对每一行组信息数据进行操作
	new_datas = [['组名', '组员']]
	# 遍历每一组
	for group in groups[1:]:
		# 遍历每个成员
		for member in group[1:]:
			# 组成对应关系
			new_row_data = []
			new_row_data.append(group[0])
			new_row_data.append(member)
			new_datas.append(new_row_data)
	print('转换来的数据')
	print(new_datas)
	with open('new_groups.csv', 'w', newline='') as f:
		writer = csv.writer(f)
		for row in new_datas:
			writer.writerow(row)
	print('生成目标表')

if __name__ == '__main__':
	filename = 'groups.csv'
	gen_csv(filename)
	from_csv_to_2col_csv(filename)


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。