【问题标题】:How to identify incomplete details for each id?如何识别每个 id 的不完整详细信息?
【发布时间】: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

请注意malefemale 列中的值表示如下:

1 - "Yes"
0 - "No"

我需要这样的东西,

预期数据框:

请注意Var栏中的值表示如下:

1 - "the gender details are not missing"
0 - "the gender details are missing"

另外,请注意,一个 emp_id 可以是男性也可以是女性,不能同时是两者。

如果在malefemale 列中观察到,

对于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


    【解决方案1】:

    试试这个:

    df['var']  =  (df.male + df.female).groupby(df.emp_id).transform('min')
    
    In [39]: df
    Out[39]:
        emp_id  male  female      Month_Year  var
    0      423     0       0      March-2016    0
    1      423     0       0      April-2016    0
    2      423     0       1        May-2016    0
    3      423     0       1       June-2016    0
    4      789     1       0       June-2017    0
    5      789     1       0       July-2017    0
    6      789     1       0     August-2017    0
    7      789     0       0  September-2017    0
    8      856     1       0      March-2018    1
    9      856     1       0      April-2018    1
    10     987     0       1       June-2019    1
    11     987     0       1       July-2019    1
    12     987     0       1     August-2019    1
    

    【讨论】:

    • 非常感谢!这正是我想要的。
    • @ShashidharR:不客气。很高兴我能帮忙:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2018-07-25
    • 2021-04-01
    • 2015-10-01
    相关资源
    最近更新 更多