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 删除行不起作用的主要内容,如果未能解决你的问题,请参考以下文章