我有以下数据框: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()
是为了保证数据大小不会减少。
添加回答
举报
0/150
提交
取消