我有一个如下所示的Pandas Dataframe:

    streak
0      1.0
1      2.0
2      0.0
3      1.0
4      2.0
5      0.0
6      0.0


我想删除0.0列中第一个streak之后的每一行。

结果应如下所示:

    streak
0      1.0
1      2.0

最佳答案

通过0获取第一个idxmax的索引,通过iloc获取切片,仅需要默认的唯一索引:

#df = df.reset_index(drop=True)
df = df.iloc[:df['streak'].eq(0).idxmax()]
print (df)
   streak
0     1.0
1     2.0


详情:

print (df['streak'].eq(0).idxmax())
2


编辑:对于更一般的解决方案是必要的使用numpy-通过numpy.argmax获取位置:

print (df)
   streak
a     1.0
b     2.0
c     0.0
d     1.0
e     2.0
f     0.0
g     0.0

df = df.iloc[:df['streak'].eq(0).values.argmax()]
print (df)
   streak
a     1.0
b     2.0

关于python - Python Pandas删除单元格中特定值之后的每一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49352824/

10-12 16:02