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 中的多余行 [重复]
根据列值删除Python Pandas中的DataFrame行[重复]