如何删除每组中的前导 0 记录 pandas python
how to remove leading 0 record in each group pandas python
假设有记录
index
order
group
Data
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 记录数据
期待结果
index
order
group
Data
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
with comapre for not equal 0
in boolean indexing
:
df1 = df[df['Data'].ne(0).groupby(df['group']).cummax().ne(0)]
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
假设有记录
index | order | group | Data |
---|---|---|---|
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 记录数据
期待结果
index | order | group | Data |
---|---|---|---|
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
with comapre for not equal 0
in boolean indexing
:
df1 = df[df['Data'].ne(0).groupby(df['group']).cummax().ne(0)]
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