我有一个pandas数据框,第一行的值只有零。 我想删除那些行。
因此,以df表示我的数据框,并以['a','b','c']列表示。我尝试了以下代码。
df[(df[['a', 'b', 'c']] != 0).all(axis=1)]
但是它也会打开以下数据框:
a b c
0 0 0
0 0 0
1 0 0
0 0 0
2 3 5
4 5 6
0 0 0
1 1 1
进入这个:
a b c
1 0 0
2 3 5
4 5 6
1 1 1
那不是我想要的。我只想专注于领先的行。所以,我想拥有:
a b c
1 0 0
0 0 0
2 3 5
4 5 6
0 0 0
1 1 1
拥有使用熊猫函数的简单有效的解决方案将是非常不错的。谢谢
答案 0 :(得分:1)
这里是一个示例,该示例找到不是所有零的 的第一行,然后从该点开始选择所有的零。应该解决您所描述的问题:
ix_first_valid = df[(df != 0).any(axis=1)].index[0]
df[ix_first_valid:]
答案 1 :(得分:1)
如果数据中的所有((ClientResponse)ReflectionTestUtils.getField(builder.get(), "context")).getHeaders()
行都可以使用常规解决方案-首先使用0
进行累加,然后测试每行中的任何cummsum
:
True
如果数据中至少有一个非df1 = df[(df[['a', 'b', 'c']] != 0).cumsum().any(1)]
print (df1)
a b c
2 1 0 0
3 0 0 0
4 2 3 5
5 4 5 6
6 0 0 0
7 1 1 1
行,请使用-Series.idxmax
获取非0
行的第一个值:
0