亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 python 計算 2 列中的出現次數數據

使用 python 計算 2 列中的出現次數數據

神不在的星期二 2023-12-12 15:15:36
在我的 forum.csv 文件中,有 Student_id 和 course_id 列。該列的數據如下所示:student_id,course_id886652,SIM4207886652,SIM42074484596,SSE33064484596,SSE33065843448,SSE3150886652,SIM4207我想做的是,例如,我想計算這兩列的出現次數student_id,course_id, occurrences886652,SIM4207- 1886652,SIM4207- 24484596,SSE3306- 14484596,SSE3306- 25843448,SSE3150- 1886652,SSE3150- 1這些事件需要保存在數據框中,因為我需要可視化該數據。這是我所做的代碼,但我不確定如何放入數據框。import pandas as pddata = pd.read_csv (r'forum.csv')df = pd.DataFrame(data, columns= ['course_id','student_id'])studentcourse = list(zip(df['course_id'], df['student_id']))a= pd.Series(studentcourse).value_counts()print(a)任何人都可以幫我解決這個問題嗎?我的預期輸出是:student_id,course_id, occurrences886652,SIM4207, 24484596,SSE3306, 25843448,SSE3150, 1886652,SSE3150, 1表示顯示每對的總金額(student_id 和 course_id)
查看完整描述

1 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

如果您想返回列中的值student_id和course_id出現的重復次數的累積數量,您可以使用groupby(),transform()函數來解決它cumcount:


df['Count'] = df.groupby(['student_id','course_id'])['course_id'].transform('cumcount')+1

返回:


   student_id course_id  Count

0      886652   SIM4207      1

1      886652   SIM4207      2

2     4484956   SSE3306      1

3     4484956   SSE3306      2

4     5843448   SSE3150      1

5      886652   SIM3150      1

編輯:


根據預期的輸出,僅使用 groupby 和aggby會更容易count:


print(df.groupby(['student_id','course_id']).agg({'course_id':'count'}).rename(columns={'course_id':'count'}).reset_index())

返回:


   student_id course_id  count

0      886652   SIM3150      1

1      886652   SIM4207      2

2     4484956   SSE3306      2

3     5843448   SSE3150      1


查看完整回答
反對 回復 2023-12-12
  • 1 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號