【发布时间】:2021-01-12 06:16:04
【问题描述】:
我有以下数据框:
emp_id male female Month_Year
423 0 0 March-2016
423 0 0 April-2016
423 0 1 May-2016
423 0 1 June-2016
789 1 0 June-2017
789 1 0 July-2017
789 1 0 August-2017
789 0 0 September-2017
856 1 0 March-2018
856 1 0 April-2018
987 0 1 June-2019
987 0 1 July-2019
987 0 1 August-2019
请注意male 和female 列中的值表示如下:
1 - "Yes"
0 - "No"
我需要这样的东西,
预期数据框:
请注意Var栏中的值表示如下:
1 - "the gender details are not missing"
0 - "the gender details are missing"
另外,请注意,一个 emp_id 可以是男性也可以是女性,不能同时是两者。
如果在male 和female 列中观察到,
对于emp_id 423,前两行没有性别详细信息。所以我在 Var 列中将值设为零。
对于emp_id 789,最后一行缺少性别详细信息。所以我在 Var 列中提到了零。
对于emp_id 856 and 987,在特定时期内不会丢失性别详细信息。所以我在 Var 列中给出了一个值。
我使用了以下代码:
mask = (df.assign(zeros=df['male'].eq(0))
.groupby('emp_id')[['male', 'zeros']]
.transform('sum')
.all(axis=1))
df1 = df[mask]
print (df1)
mask = (df.assign(zeros=df['female'].eq(0))
.groupby('emp_id')[['female', 'zeros']]
.transform('sum')
.all(axis=1))
df2 = df[mask]
print (df2)
上述代码的输出:
通过使用上面的代码,我能够分别捕获在男性和女性列中缺少详细信息的 emp_id。
有没有其他方法可以同时比较两列(男性和女性)并表示 Var 列中缺失的细节。
所以请告诉我解决方案:
提前致谢!
【问题讨论】:
标签: python pandas dataframe pandas-groupby