Pandas 用 df.drop 删除行不起作用

Posted

技术标签:

【中文标题】Pandas 用 df.drop 删除行不起作用【英文标题】:Pandas deleting row with df.drop doesn't work 【发布时间】:2016-11-23 16:46:34 【问题描述】:

我有一个这样的 DataFrame(第一列是 index (786...),第二列是 day (25...) 和 Rainfall amount 是空的):

Day Rainfall amount (millimetres)  
786   25                              
787   26                              
788   27                              
789   28                              
790   29                              
791    1                              
792    2                              
793    3                              
794    4                              
795    5 

我想删除第 790 行。我用 df.drop 尝试了很多东西,但没有发生任何事情。

我希望你能帮助我。

【问题讨论】:

试试这个:df = df[df.index != 790] 发布您声称无效的代码,首先您是否将drop 的结果分配回? IE。 df = df.drop(790),你确定第一列是索引吗? df.index 显示什么? 如果这不是索引,那么df[df['Day'] != 790] 将作为'Day' 是一列而不是索引,显示来自df.info() 的输出 是的,它是索引。我知道我的问题不太清楚,但它适用于 MaxU 的代码。 您的问题不清楚,因为您没有包含完整的代码,说明某个功能不起作用并没有给出完整的图片 【参考方案1】:

在删除新的 DataFrame 时返回。如果要对当前 DataFrame 应用更改,则必须指定 inplace 参数。

选项 1 分配回df -

df = df.drop(790)

选项 2 就地参数 -

df.drop(790, inplace=True)

【讨论】:

很好奇为什么决定一个对象的方法返回另一个对象,而更合理地期望它改变对象本身...... 你所期望的不是别人所期望的......另一方面的论点是它可能需要更多的推理。使用不可变代码,可以修改一条数据的唯一地方是显式赋值,通过可变操作,您可以查看每个对方法的调用。

以上是关于Pandas 用 df.drop 删除行不起作用的主要内容,如果未能解决你的问题,请参考以下文章

pandas操作手册

pandas python 怎么删除表格中的某一行?

使用 .index 删除 pandas 中的行

Pandas - 格式化数据框行不起作用

Python之如何删除pandas DataFrame的某一/几列

Pandas数据清洗方法