如何基于另一列值过滤数据帧中的行?
我有一个数据框架,
ip_df:
class name marks min_marks min_subjects
0 I tom [89,85,80,74] 80 2
1 II sam [65,72,43,40] 85 1根据"min_subject“和"min_marks”的列值,应对行进行筛选。
对于索引0,“
最终结果应该是,
op_df:
class name marks min_marks min_subjects flag
0 I tom [89,85,80,74] 80 2 1
1 II sam [65,72,43,40] 85 1 0有人能帮助我在数据框架中实现同样的目标吗?
发布于 2019-11-12 11:20:58
使用zip 3列对列表的理解,比较生成器中的每个值和sum中的计数,最后用最小标记进行比较并转换为整数:
df['flag'] = [1 if sum(x > c for x in a) >= b else 0
for a, b, c in zip(df['marks'], df['min_subjects'], df['min_marks'])]通过int将布尔值转换为0,1的替代方法
df['flag'] = [int(sum(x > c for x in a) >= b)
for a, b, c in zip(df['marks'], df['min_subjects'], df['min_marks'])]或使用numpy解决方案
df['flag'] = [int(np.sum(np.array(a) > c) >= b)
for a, b, c in zip(df['marks'], df['min_subjects'], df['min_marks'])]print (df)
class name marks min_marks min_subjects flag
0 I tom [89, 85, 80, 74] 80 2 1
1 II sam [65, 72, 43, 40] 85 1 0https://stackoverflow.com/questions/58817539
复制相似问题