python.pandas groupby根據最小值更改某列數據


根據outid列和course_no列對數據進行group_by然后count

想要獲得count=3的分組中 score的最小值

並根據score最小值所在的行去修改另外一列

df2 = df.groupby(by=['outid','course_no'],as_index=False).count()
a=df2[df2['id']>2]
c= DataFrame(list(zip(a['outid'],a['course_no'])))
c.columns=['outid','course_no']
b=pd.merge(c,df,on=['outid','course_no'])
e=b.groupby(['outid','course_no'],as_index=False).apply(lambda t: t[t.score==t.score.min()])
g=list(e['id'])
for i in  g:
    df.loc[df['id']==i,'exam_natures_new']=4

思路是先篩選出count>2的outid和course_no

然后和原先的dataframe取交集

對交集再進行group by 取最小值

獲得最小值的的id

將id放入list

遍歷list改變原dataframe


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM