多行的相同id变成1行

img

img


如何将图一变成图二,就是几行id是一样的,就是同一个人。但是选课不同,例如图一选了语文1或语文2就是选了语文,图二中语文那一列就是1,否则是0。所以图二多出了语文,数学,英语这三列,选了就是1没选就是0。最终目的就是要把多行相同id的同一个人变成一行。

以下内容部分参考ChatGPT模型:


可以先将每个人的选课情况用字典存储起来,然后再将字典转换成DataFrame。具体实现代码如下:

import pandas as pd

# 读取原始数据
df = pd.read_excel('data.xls')

# 将每个人的选课情况用字典存储起来
data = {}
for index, row in df.iterrows():
    id = row['id']
    subject = row['subject']
    if id not in data:
        data[id] = {'id': id, '语文': 0, '数学': 0, '英语': 0}
    if subject == '语文1' or subject == '语文2':
        data[id]['语文'] = 1
    elif subject == '数学':
        data[id]['数学'] = 1
    elif subject == '英语':
        data[id]['英语'] = 1

# 将字典转换成DataFrame
new_df = pd.DataFrame(list(data.values()))

# 保存结果
new_df.to_excel('result.xls')

其中,data字典的键是每个人的id,值是一个包含id、语文、数学、英语四个字段的字典。遍历原始数据时,如果当前行的id已经在data字典中出现过,则更新该人的选课情况;否则,创建一个新的字典表示该人的选课情况。最后,将data字典转换成DataFrame并保存到文件中。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快