我创建了一个 pandas 数据框,如下所示:
import pandas as pd
ds1 = {'col1':[1,2,3,4,5,6,7], "col2" : [1,1,0,1,1,1,1]}
df1 = pd.DataFrame(data=ds1)
数据框看起来像这样:
print(df1)
col1 col2
0 1 1
1 2 1
2 3 0
3 4 1
4 5 1
5 6 1
6 7 1
一旦
col2
等于0,我想删除所有后续记录,无论它们的值如何。在这种情况下,生成的数据框将如下所示:
col1 col2
0 1 1
1 2 1
2 3 0
另一个例子。
import pandas as pd
import numpy as np
ds1 = {'col1':[1,2,3,4,5,6,7], "col2" : [0,0,0,1,1,1,1]}
df1 = pd.DataFrame(data=ds1)
在这种情况下,生成的数据框将如下所示:
col1 col2
0 1 0
有谁知道如何在 python 中做到这一点?
你可以做
out = df.loc[:df.col2.idxmin()]
Out[28]:
col1 col2
0 1 1
1 2 1
2 3 0
另一种可能的解决方案:
df1.iloc[0:(1+df1['col2'].eq(0).idxmax()), :]
按整数位置选择:
df = df1.iloc[:df1[df1['col2'].eq(0)].index[0] + 1]
----------
col1 col2
0 1 1
1 2 1
2 3 0