为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算指示每列中存在特定值的总和并获取每个 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 关注
  • 68 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信