遍历pandas datafram时删除行

2024-05-28 22:53:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧数据框

Name    dist
aaaa     10
bbbb     11
cccc     41
dddd     77

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

^{pr2}$

为此,我使用了以下代码

>>> 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)
... 

但我有错误。你能帮忙吗?在


Tags: to数据name距离dfifdistcccc
2条回答

你可以这样做:

In [110]: df = df[df.dist.diff().fillna(100) >= 10]

In [111]: df
Out[111]:
   Name  dist
0  aaaa    10
2  cccc    41
3  dddd    77

说明:

^{pr2}$

如果决定要删除哪些行的标准有点棘手,例如与前一行/下一行中的值相关,那么一种简单的方法是简单地建立一个要删除的行的索引列表,然后在最后一次性删除所有行。 e、 g

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 )

相关问题 更多 >

    热门问题