python - 如果列中至少有一个特定值,则删除所有行

标签 python dataframe if-statement conditional-statements

我正在尝试用 Python 编写一段代码,如果 worked 列中至少有一个特定值,则删除某个 id 的所有观察结果。想象一下,如果您想知道哪位员工在这一年中从未缺席过,那么他/她每天都会获得奖励。那么,如果有人缺席 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,但仍会显示 1 行 id A,该人至少 1 天没有出现。

我想确保如果我这样做

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']

关于python - 如果列中至少有一个特定值,则删除所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60191342/

相关文章:

algorithm - 使用条件组合优化搜索查询

javascript - 不懂这个JS

python - 如何使用python基于子字符串将数据从一张纸导入另一张纸

python - Django:批量操作

python - 在Tensorflow中保存/恢复不同变量范围下的权重

python - 代码中有eventlet.monkey_patch()不能远程调试?

python - 具有逻辑条件的 pandas 数据帧 groupby 的过滤语法

python - DataFrame 到 Panel 通过 Pandas 的非唯一列索引

python - Pandas 中的数据透视表/反转表(但不完全是)

c - 使用逗号运算符的意外输出