我有以下數(shù)據(jù)框: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請(qǐng)注意男性、女性和未知欄中的值如下所示:1 - "Yes"0 - "No"可以看出,每個(gè) emp_id 的性別在特定時(shí)期內(nèi)發(fā)生變化。(但 emp_id 保持不變,盡管性別發(fā)生了變化)。因此,我必須對(duì)每個(gè) emp_id 進(jìn)行計(jì)數(shù),了解性別在特定時(shí)期內(nèi)是否發(fā)生變化。我需要這樣的東西,預(yù)期數(shù)據(jù)框:如果在男性、女性和未知列中觀察到:對(duì)于emp_id 423- 所有三列中都存在性別,因此計(jì)數(shù)為3。對(duì)于emp_id 789- 兩列中都存在性別,因此計(jì)數(shù)為2。對(duì)于emp_id 856和987- 僅在一列中存在性別,因此計(jì)數(shù)為1。我使用了下面的代碼:df['Total_count'] = df.groupby('emp_id')['male','female', 'Unknown'].agg(['sum']).reset_index()但我得到了一個(gè)錯(cuò)誤,也不符合要求。所以請(qǐng)讓我知道解決方案。
1 回答

烙印99
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
這應(yīng)該可以解決問(wèn)題:
df['Total_count'] = df.groupby('emp_id')[['male','female','Unknown']].transform('max').sum(axis=1)
它所做的就是按 進(jìn)行分組emp_id
并找到每列的最大值,然后對(duì)這些列進(jìn)行求和。它的使用transform()
是為了保證數(shù)據(jù)大小不會(huì)減少。
添加回答
舉報(bào)
0/150
提交
取消