我有一些数据,看起来像这样-

Student information

我需要根据学生编号/姓名对记录进行分组/合并,并在新列中添加各自的分数--科目,如下所示--

Merge student info

我可以通过Excel/Python/任何编程语言来实现这一点.

我try 使用Consolate选项根据键值合并行,但没有成功.我也try 过使用Python迭代它,但没有结果.感谢您在这里提供的任何帮助. 先谢谢你.

推荐答案

您可以使用Pandas库来实现这一点(如果您更喜欢使用Python).以下代码应该可以为您工作. 它处理包含您的学生数据的dataframe,groups按唯一的学生属性(编号、姓名、地址)对其进行处理,并重新排列它以使其具有交替的Subject和Marks列.

import pandas as pd
pd.set_option('display.max_columns', None)
# Sample data
data = {
    'Number': [1, 2, 3, 4, 1, 2, 5, 2, 1, 3],
    'Name': ['John', 'Kate', 'Angela', 'Ross', 'John', 'Kate', 'Mitchln', 'Kate', 'John', 'Angela'],
    'Address': ['aaaaaaa', 'bbbbbbb', 'cccccccc', 'ddddddd', 'aaaaaaa', 'bbbbbbb', 'eeeeeee', 'bbbbbbb', 'aaaaaaa',
                'cccccccc'],
    'Subject': ['Maths', 'Maths', 'Maths', 'English', 'Science', 'Science', 'Maths', 'English', 'English', 'English'],
    'Marks': [55, 89, 77, 90, 67, 46, 54, 97, 88, 85]
}

df = pd.DataFrame(data)
output_df = pd.DataFrame()
for name, group in df.groupby(['Number', 'Name', 'Address']):
    row = {'Number': name[0], 'Name': name[1], 'Address': name[2]}
    subject_marks = list(zip(group['Subject'], group['Marks']))
    for i, (subject, marks) in enumerate(subject_marks, start=1):
        row[f'Subject_{i}'] = subject
        row[f'Marks_{i}'] = marks
    output_df = pd.concat([output_df, pd.DataFrame([row])], ignore_index=True)
output_df = output_df.fillna('')
column_order = ['Number', 'Name', 'Address']
for i in range(1, df['Subject'].nunique() + 1):
    column_order.append(f'Subject_{i}')
    column_order.append(f'Marks_{i}')
output_df = output_df[column_order]
print(output_df)

Python相关问答推荐

如何使用关键参数按列对Pandas rame进行排序

Tkinter -控制调色板的位置

收件箱转换错误- polars.exceptions. ComputeHelp- pandera(0.19.0b3)带有polars

Python无法在已导入的目录中看到新模块

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

Pandas 第二小值有条件

使用FASTCGI在IIS上运行Django频道

仿制药的类型铸造

更改键盘按钮进入'

如何获取TFIDF Transformer中的值?

优化器的运行顺序影响PyTorch中的预测

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

mypy无法推断类型参数.List和Iterable的区别

从嵌套的yaml创建一个嵌套字符串,后面跟着点

python中的解释会在后台调用函数吗?

如何在PySide/Qt QColumbnView中删除列

Flash只从html表单中获取一个值

matplotlib图中的复杂箭头形状

GPT python SDK引入了大量开销/错误超时