python - 在 pandas 中查找组中的第一个非零元素

标签 python pandas dataframe

我有一个数据框,您可以在下面看到它的样子。名为 target 的列是我想要的列:

group    value    target

  1        1        0
  1        2        0
  1        3        2
  1        4        0
  1        5        1
  2        1        0
  2        2        0
  2        3        0
  2        4        1
  2        5        3

现在我想在每个组的 target 列中找到第一个非零值,并删除每个组中该行之前的行。所以输出应该是这样的:

group    value    target

  1        3        2
  1        4        0
  1        5        1
  2        4        1
  2        5        3

我见过this post ,但我不知道如何更改代码以获得我想要的结果。
我怎样才能做到这一点?

最佳答案

在分组依据中,设置sortFalse ,得到cumsum ,然后过滤不等于 0 的行:

df.loc[df.groupby(["group"], sort=False).target.cumsum() != 0]

    group   value   target
2      1       3    2
3      1       4    0
4      1       5    1
8      2       4    1
9      2       5    3

关于python - 在 pandas 中查找组中的第一个非零元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63236546/

相关文章:

python - 在 Scipy 中使用 Pandas 数据框

Python 就地排序并行数组?

python - 根据聚合计数对 Pandas DataFrame 的行进行排序并随机获取一行

python - 对 Pandas DataFrame 中的部分字符串(关键字)匹配求和

apache-spark - 动态重命名 PySpark DataFrame 中的多个列

Python如何为所有子类的联合定义类型提示

python - celery 不采摘 CELERY_ALWAYS_EAGER 设置

python - 如何在不丢失数据框的情况下在 Pandas 中编辑姓氏、名字的顺序

python Pandas : Denormalize data from one data frame into another

python - pandas DataFrame 中的假日日历