您可以使用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)