我有以下 Dataframe :
df=pd.DataFrame({
'n' : [0,1,2,3, 0,1,2, 0,1,2],
'col1' : ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C'],
'col2' : [0, 0, 0, 0, 3.3, 0, 4, 1.94, 0, 6.17]
})
其形式为:
n col1 col2
0 0 A 0.00
1 1 A 0.00
2 2 A 0.00
3 3 B 0.00
4 0 B 3.30
5 1 B 0.00
6 2 B 4.00
7 0 C 1.94
8 1 C 0.00
9 2 C 6.17
我想要一个函数,将该 Dataframe 作为参数,并将返回一个新的 Dataframe ,其中没有列"col2"中值为0的前几行
- 我的密码**
def remove_lead_zeros(df):
new_df = df[df['col2'] != 0]
return new_df
我的函数删除了所有值为0.0的行,而我只想删除所有第一行,
- 目标**
得到以下 Dataframe 作为结果:
n col1 col2
0 0 B 3.30
1 1 B 0.00
2 2 B 4.00
3 0 C 1.94
4 1 C 0.00
5 2 C 6.17
任何帮助从您的身边将高度赞赏(向上投票所有答案),谢谢!
3条答案
按热度按时间slwdgvem1#
对非零col2值和布尔索引的布尔序列使用
groupby.cummax
:输出:
中间人理解逻辑:
b1zrtrql2#
您可以使用
cumsum
:当和为0时,表示有前导零。
fxnxkyjh3#
首先,获取一个布尔数组,其中
col2
不为0,然后使用cumulative max,以获取可应用于 Dataframe 的掩码。其中
result
看起来像