假设有记录
索引 | 订购 | 组 | 数据 |
---|---|---|---|
1 | 1 | A | 0 |
2 | 2 | A | 0 |
3 | 3 | A | 0 |
4 | 4 | A | 1 |
5 | 5 | A | 2 |
6 | 6 | A | 1 |
7 | 1 | B | 0 |
8 | 2 | B | 2 |
9 | 3 | B | -1 |
10 | 4 | B | 0 |
11 | 5 | B | 2 |
12 | 6 | B | 4 |
我想排除每组中前导 0 条记录数据
期待结果
索引 | 订购 | 组 | 数据 |
---|---|---|---|
4 | 4 | A | 1 |
5 | 5 | A | 2 |
6 | 6 | A | 1 |
8 | 2 | B | 2 |
9 | 3 | B | -1 |
10 | 4 | B | 0 |
11 | 5 | B | 2 |
12 | 6 | B | 4 |
我该如何解决这个问题?我看到了 lstrip() 但它只适用于每条记录。
GroupBy.cummax
与 comapre 一起使用,表示 0
中的不等于
boolean indexing
:
df1 = df[df['Data'].ne(0).groupby(df['group']).cummax()]
print (df1)
index order group Data
3 4 4 A 1
4 5 5 A 2
5 6 6 A 1
7 8 2 B 2
8 9 3 B -1
9 10 4 B 0
10 11 5 B 2
11 12 6 B 4