Pandas +不按索引删除特定行[重复]

Posted

技术标签:

【中文标题】Pandas +不按索引删除特定行[重复]【英文标题】:Pandas + Delete specific rows not by index [duplicate] 【发布时间】:2021-10-02 17:13:15 【问题描述】:

我已经开始学习 pandas 并且发现了一个我似乎无法解决的问题。 我正在从 csv 文件加载数据,需要删除一些匹配几个字符串的行。

CSV:

id fullname city  tst
999      bbb  CIT  aaa
888      bbb  CIT  aaa
777      xxx  JJJ  aaa

我尝试过的:

import pandas as pd

df = pd.read_csv('zzz.csv')

#to_drop = ['xxx', 'aaa']

df = df.drop('xxx',axis=0)

但我收到以下错误:

KeyError: "['xxx'] not found in axis"

我在这里缺少什么?另外,如果我想传递一个列表并从列表中删除所有匹配字符串的行怎么办?示例:

to_drop = ['xxx', 'aaa']

df = df.drop(to_drop,axis=0)

【问题讨论】:

正如上面评论中提到的,您可以使用布尔表达式来选择行。至于您的尝试有什么问题,是您没有设置索引,这是drop 所要求的。试试看:df.set_index("fullname").drop("xxx", axis=0) 【参考方案1】:

我建议:

df = df[df.fullname!='xxx']

对于列表:

names=['xxx','bbb']
df = df[~df.fullname.isin(names)]

~ 运算符的意思是“不”

【讨论】:

以上是关于Pandas +不按索引删除特定行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas 删除 Python 中的多余行 [重复]

pandas进行数据预处理

根据列值删除Python Pandas中的DataFrame行[重复]

在 Pandas DataFrame 中删除重复索引的最快方法 [重复]

Pandas Pivot重复索引行

pandas:删除两列中具有相同索引的行中的重复值