在遍历 Pandas 数据帧时删除一行

Ssa*_*ank 3 python pandas

我有一个数据框 df

Name    dist
aaaa     10
bbbb     11
cccc     41
dddd     77
Run Code Online (Sandbox Code Playgroud)

我想删除距离小于 10 的行到下一行。expexted 输出是

Name    dist
aaaa     10
cccc     41
dddd     77
Run Code Online (Sandbox Code Playgroud)

为此,我使用了以下代码

>>> for idx,row in df.iterrows():
...     if idx < df.shape[0]-1:
...             if ((df.ix[idx+1,'dist_to_TSS']-df.ix[idx+1,'dist_to_TSS'])<10):
...                     df.drop(row)
... 
Run Code Online (Sandbox Code Playgroud)

但我得到错误。你能帮我吗?

jac*_*ury 6

如果您决定要删除哪些行的标准有点棘手,例如与上一行/下一行中的值相关,那么一个简单的方法是简单地建立要删除的行的索引列表,然后删除它们最后一应俱全。例如

indexes_to_drop = []

for i in df.index:
    ....
    if {make your decision here}:
        indexes_to_drop.append(i)
    ....

df.drop(df.index[indexes_to_drop], inplace=True )
Run Code Online (Sandbox Code Playgroud)