python - 在迭代 pandas 数据帧时删除一行

标签 python pandas

我有一个数据框 df

Name    dist
aaaa     10
bbbb     11
cccc     41
dddd     77

我想删除距离小于 10 的行到下一行。预期输出为

Name    dist
aaaa     10
cccc     41
dddd     77

为此,我使用了以下代码

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

但是我收到错误。你能帮忙吗?

最佳答案

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

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 )

关于python - 在迭代 pandas 数据帧时删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38017007/

相关文章:

python - 博托服务器错误 : 400 Bad Request: Mail is not sending

Python/Keras - 访问 ModelCheckpoint 回调

python - 您可以使用流而不是本地文件上传到S3吗?

python - 如何在 Python 中绘制宽度可变但没有间隙的条形图,并将条形宽度添加为 x 轴上的标签?

python - 在 pandas 中制作具有不同大小的列表的 DataFrame

python - 使用具有混合类型列的 rpy2 将 pandas df 转换为 R data.frame

python - 连接 DataFrame 的日期时间并转发填充数据

python - SQLAlchemy 重新连接到数据库

python - 在模板中显示我的报价项目的总价

python - 使用 pandas 和 bokeh 创建带有分组的堆叠条形图