根据条件选择组中的行

领带_24
        A     B     C
0    blue  14.5  14.0
1    blue  14.0  14.0
2    blue  13.5  14.0
3    blue  12.0  14.0
4    blue  10.5  14.0
5   green  20.0  19.0
6   green  19.0  19.0
7   green  18.5  19.0
8   green  18.0  19.0
9   green  17.5  19.0
10  green  16.0  19.0

我想为df1每个A组(“蓝色”和“绿色”)使用下一个条件创建一个新的

  • 选择B = C的行和B = C-1的行
  • 如果组中不存在满足条件(B = C-1)的任何B值,请选择下一行对应的下一行。例如,在“蓝色组”中,B = C-1将为14.0-1 = 13.0由于它不存在任何“蓝色组”,因此请选择位于下方的下一行,即:13.0df

    3 blue 12.0 14.0

df1应该是:

       A     B     C
1   blue  14.0  14.0
3   blue  12.0  14.0
6  green  19.0  19.0
8  green  18.0  19.0

我试过了:

df1 = df[(df["B"] == df["C"]) | (df["B"] == df["C"]-1)]
要么

对于第二个条件:B = C - 1

  • 我们可以设置一个条件B - C <= -1,然后
  • 在每个组中找到满足此条件的第一行的索引。

    idx_cond = df.groupby("A").apply(
                   lambda x: x.where(x.B-x.C <= -1).first_valid_index())
    # A
    # blue     3
    # green    8
    # dtype: int64
    pd.concat([df[df.B == df.C], df.loc[idx_cond]])
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章