如何根据条件删除 pandas 数据框中的后续记录

问题描述 投票:0回答:3

我创建了一个 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 中做到这一点?

pandas if-statement record drop
3个回答
2
投票

你可以做

out = df.loc[:df.col2.idxmin()]
Out[28]: 
   col1  col2
0     1     1
1     2     1
2     3     0

1
投票

另一种可能的解决方案:

df1.iloc[0:(1+df1['col2'].eq(0).idxmax()), :]

1
投票

按整数位置选择:

df = df1.iloc[:df1[df1['col2'].eq(0)].index[0] + 1]


----------
   col1  col2
0     1     1
1     2     1
2     3     0
© www.soinside.com 2019 - 2024. All rights reserved.