gpt4 book ai didi

python - 比较 ID 的相同列行并将行减少为所需的输出

转载 作者:行者123 更新时间:2023-12-02 15:47:08 25 4
gpt4 key购买 nike

我有这样一个数据框

<表类="s-表"><头>学号主题SID结果<正文>101英语1通过101英语1通过101数学3通过101数学3通过101数学33失败101数学33失败102英语1通过102英语1通过102数学3失败102数学3失败

我想要这样的输出

<表类="s-表"><头>主题SID通过失败失败_student_ID<正文>英语120数学311102数学3301101

我有一个大型数据集,想要获取有关受试者和受试者 ID 的结果,以了解有多少人通过和未通过。

如何用python写得到这种数据框?

最佳答案

您可以使用 pivot_table使用 len 的 aggfunc 获取 PassFailreset_index

的计数
df = df.drop_duplicates(ignore_index=True)
df = (df.drop('Student ID', axis=1).
pivot_table(index=['Subject', 'SID'],
columns='Result',
aggfunc=len,
fill_value=0).
rename_axis('', axis=1).
reset_index()
)
df['Total Students'] = df['Pass'] + df['Fail']

打印(df):

       Subject  SID  Fail  Pass  Total Students
0 English 1 0 2 2
1 Mathematics 3 1 1 2
2 Mathematics 33 1 0 1

失败的学生证:

如果您需要失败的学生 ID,您需要做更多的事情 - 使用 list aggfunc 在数据透视表中包含“学生 ID”,并对列进行一些重新排列:

df = (df.
pivot_table(index=['Subject', 'SID'],
columns=['Result'],
values=['Student ID'],
aggfunc={'Result':len,'Student ID':list},
fill_value=0)
)
df.columns = df.columns.to_flat_index()
df = df.drop(('Student ID', 'Pass'),axis=1)
df.columns = ['Fail', 'Pass', 'Failed_Student_ID']
df = df.reset_index()

打印(df):

       Subject  SID  Fail  Pass Failed_Student_ID
0 English 1 0 2 0
1 Mathematics 3 1 1 [102]
2 Mathematics 33 1 0 [101]

关于python - 比较 ID 的相同列行并将行减少为所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73782914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com