我有一个数据框,您可以在下面看到它的样子。名为 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 ,但我不知道如何更改代码以获得我想要的结果。
我怎样才能做到这一点?
最佳答案
在分组依据中,设置sort
至False
,得到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/