«

python:姓名按性别排序写入电子表格

admin 发布于 阅读:211 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)

python excel pandas