python:姓名按性别排序写入电子表格
在工作中,有时候我们需要将姓名按性别进行排序,男、女两个一组交叉排列并写入电子表格。用 Python 可以实现这个功能,以下是示例代码。
# order_by_gender_finaly.py
# 导入pandas模块
import pandas as pd
# 读取excel文件中班级为"1"的数据
data = pd.read_excel('七年级.xlsx')
class_1 = data[data['班级'] == 1]
# 将两列数据变为字典,方法一
dict_data = class_1.set_index('姓名')['性别'].to_dict()
# 将字典键值对{'张三': '男', '李四': '女'}变成[{'姓名': '张三', '性别': '女'}]这种格式
data_list = []
for key, value in dict_data.items():
new_dict = {}
new_dict['姓名'] = key
new_dict['性别'] = value
data_list.append(new_dict)
# 先分别取出男性和女性的数据
male_data = [item for item in data_list if item['性别'] == '男']
female_data = [item for item in data_list if item['性别'] == '女']
# 交替合并男性和女性数据
sorted_data = []
i, j = 0, 0
while i < len(male_data) and j < len(female_data):
for _ in range(2): # 每次添加两个男性
if i < len(male_data):
sorted_data.append(male_data[i])
i += 1
for _ in range(2): # 每次添加两个女性
if j < len(female_data):
sorted_data.append(female_data[j])
j += 1
# 如果男性或女性数据有剩余,添加到末尾
while i < len(male_data):
sorted_data.append(male_data[i])
i += 1
while j < len(female_data):
sorted_data.append(female_data[j])
j += 1
# 输出列表
out_list = []
in_list = []
for item in sorted_data:
in_list.append(item['姓名'])
in_list.append(item['性别'])
out_list.append(in_list)
in_list = []
# 将列表数据写入excel
# 将列表转换为 DataFrame
df = pd.DataFrame(out_list, columns=['姓名', '性别'])
# 写入 Excel 文件
df.to_excel('output.xlsx', index=False)