Python 如何基于条件在Pandas中创建新列
快速愚蠢的问题-我相信这是问过,但无法文件的细节。我有一个数据框架,如下所示-Python 如何基于条件在Pandas中创建新列,python,pandas,Python,Pandas,快速愚蠢的问题-我相信这是问过,但无法文件的细节。我有一个数据框架,如下所示- Student ID, Subjects , MArks_Received, Marks 222 English 3 90 222 Maths 3 80 222 Science 3 70 223 English 2
Student ID, Subjects , MArks_Received, Marks
222 English 3 90
222 Maths 3 80
222 Science 3 70
223 English 2 90
223 Maths 2 80
224 Maths 2 80
我正在寻找以下基于主题和接收条件的输出,如果每个学生的行数不匹配,则必须添加额外的列(待定)或接收
Student ID, Subjects , Expected_Rows, Marks, State
222 English 3 90 Received
222 Maths 3 80 Received
222 Science 3 70 Received
223 English 2 90 Received
223 Maths 2 80 Received
224 Maths 2 80 PENDING
正如我预期的那样,第2行是“224”,但只收到1,我应该将其标记为“待定”
我可以按如下方式汇总分数总和,但无法计算如何添加状态。感谢您的帮助
聚合数据帧
有很多方法,如果有帮助,请参见以下内容: 添加一个新列
'count'
,然后'State'
说明:
df['Count'] = df.groupby('Student ID')['Student ID'].transform('count')
df['State'] = np.where(df['Count'] != df['MArks_Received'], 'PENDING','Received')
如果不想添加新列,请使用以下命令:
df['State'] = np.where(df.groupby('Student ID')['Student ID'].transform('count') != df['MArks_Received'], 'PENDING','Received')
考虑“<代码> >‘学生ID’/代码>不符合<代码>‘期望行’/CODE的行。
谢谢Manoj的快速帮助-将给予它一个机会。df['State'] = np.where(df.groupby('Student ID')['Student ID'].transform('count') != df['MArks_Received'], 'PENDING','Received')