我试图用Python编写代码以删除对某个id
列的所有观察,如果该列中至少有一个特定值worked
。想想看,好像您想知道一年中从未缺席的雇员一样,因此他/她每天出现都会获得奖金。然后,如果某人缺席1或50天,那是一样的,因为该人那一年没有完美的表现主义。
假设df看起来像这样(df):
id worked
1 A yes
2 A no
3 B yes
4 B yes
5 C no
6 C no
7 D yes
8 D yes
理想的新df应该如下所示(df2):
id worked
3 B yes
4 B yes
7 D yes
8 D yes
df2 = df1[df1.worked == 'yes']
不会执行此操作,因为它将删除id
C,但仍会显示id
A行中至少有1天未显示的A行。
我想确保如果我这样做
df2.id.unique()
只有B和D获得奖金,而不是A,B和D。
为了清楚起见,我需要获取df2而不是的列表unique()
。那只是为了举例说明df2的可能用途。
这是一个例子。但是,我需要添加一个辅助列:
df['aux_col'] = df.groupby('id')['worked'].transform('nunique')
final_df = df[(df['aux_col'] == 1) & (df['worked'] == 'yes')]
final_df = final_df.drop(columns='aux_col')
print(final_df)
输出:
id worked
2 B yes
3 B yes
6 D yes
7 D yes
如您所述,仔细检查:
print(final_df['id'].unique())
返回值:
['B' 'D']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句