簡體   English   中英

如何根據條件在 Pandas 中創建新列

[英]How Create new column in Pandas based on condition

快速愚蠢的問題-我確定之前有人問過這個問題,但無法提交詳細信息。 我有一個數據框 df_students 如下 -

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

我正在尋找基於主題和接收條件的以下輸出,如果每個學生的行數不匹配,則必須添加額外的 Colum (PENDING) 或 Received。

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

由於我有 "224" 的 Expected_Rows 2 ,但只收到了 1 ,我應該將其標記為“Pending”。

我能夠匯總如下總分,但無法弄清楚如何添加狀態。 任何幫助都值得贊賞。

聚合數據框

df_aggregate = df_students.groupby(['Student ', 'Marks'])['Marks'].agg(sum).reset_index()

有很多方法,請參閱下面是否有幫助:

添加一個新列'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')

它考慮'Student ID'的計數與'Expected Rows'不匹配'Expected Rows'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM