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

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

如何計算指示每列中存在特定值的總和并獲取每個 id 的總計數?

如何計算指示每列中存在特定值的總和并獲取每個 id 的總計數?

德瑪西亞99 2023-09-05 20:18:10
我有以下數據框:emp_id  male    female  Unknown  Month_Year423       0       0        1     March-2016423       1       0        0     April-2016 423       0       1        0     May-2016423       0       1        0     June-2016789       1       0        0     June-2017789       1       0        0     July-2017789       1       0        0     August-2017789       0       0        1     September-2017856       1       0        0     March-2018856       1       0        0     April-2018987       0       1        0     June-2019987       0       1        0     July-2019987       0       1        0     August-2019請注意男性、女性和未知欄中的值如下所示:1 - "Yes"0 - "No"可以看出,每個 emp_id 的性別在特定時期內發生變化。(但 emp_id 保持不變,盡管性別發生了變化)。因此,我必須對每個 emp_id 進行計數,了解性別在特定時期內是否發生變化。我需要這樣的東西,預期數據框:如果在男性、女性和未知列中觀察到:對于emp_id 423- 所有三列中都存在性別,因此計數為3。對于emp_id 789- 兩列中都存在性別,因此計數為2。對于emp_id 856和987- 僅在一列中存在性別,因此計數為1。我使用了下面的代碼:df['Total_count'] = df.groupby('emp_id')['male','female', 'Unknown'].agg(['sum']).reset_index()但我得到了一個錯誤,也不符合要求。所以請讓我知道解決方案。
查看完整描述

1 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

這應該可以解決問題:

df['Total_count'] = df.groupby('emp_id')[['male','female','Unknown']].transform('max').sum(axis=1)

它所做的就是按 進行分組emp_id并找到每列的最大值,然后對這些列進行求和。它的使用transform()是為了保證數據大小不會減少。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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