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')