Python Pandas删除单元格中特定值后的每一行

时间:2018-03-18 21:08:28

标签: python pandas dataframe

我有一个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 

2 个答案:

答案 0 :(得分:3)

获取idxmax的第一个0索引并按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

答案 1 :(得分:0)

这是numpy.where的通用解决方案。它可以用于匹配任何指定值的第一个实例。

df = df.iloc[:np.where(df['streak']==0)[0][0]]

#    streak
# 0     1.0
# 1     2.0