【问题标题】:Pandas + Delete specific rows not by index [duplicate]Pandas +不按索引删除特定行[重复]
【发布时间】: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)

标签: python pandas


【解决方案1】:

我建议:

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

对于列表:

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

~ 运算符的意思是“不”

【讨论】:

    猜你喜欢
    • 2020-11-22
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2021-10-06
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多