【问题标题】:Remove rows from pandas DataFrame based on condition根据条件从 pandas DataFrame 中删除行
【发布时间】:2018-01-11 09:23:42
【问题描述】:

我是 pandas 的新手,所以请原谅新手的问题!

我有以下代码;

import pandas as pd

pet_names = ["Name","Species"
"Jack","Cat"
"Jill","Dog"
"Tom","Cat"
"Harry","Dog"
"Hannah","Dog"]

df = pd.DataFrame(pet_names)

df = df[df['Species']!='Cat']

print(df)

我想删除“物种”列中所有包含“猫”的行,留下所有的狗。我该怎么做呢?不幸的是,此代码当前返回错误。

【问题讨论】:

标签: python pandas dataframe filter


【解决方案1】:

一般boolean indexing

df[df['Species'] != 'Cat']
# df[df['Species'].ne('Cat')]

  Index    Name Species
1     1    Jill     Dog
3     3   Harry     Dog
4     4  Hannah     Dog

df.query

df.query("Species != 'Cat'")

  Index    Name Species
1     1    Jill     Dog
3     3   Harry     Dog
4     4  Hannah     Dog

有关pd.eval() 系列函数、它们的特性和用例的信息,请访问Dynamic Expression Evaluation in pandas using pd.eval()


df.isin

df[~df['Species'].isin(['Cat'])]

  Index    Name Species
1     1    Jill     Dog
3     3   Harry     Dog
4     4  Hannah     Dog

【讨论】:

  • 每个答案我都给你投了四次票。太糟糕了,SO 无法识别这些点击。
  • "AttributeError: 'DataFrame' object has no attribute 'Species'" - 我做错了什么?
  • @JamesGeddes 如果您使用与帖子中相同的数据,这就是原因。您的输入数据有问题。试试这个:pet_names = [["Jack","Cat"], ["Jill","Dog"], ["Tom","Cat"], ["Harry","Dog"] ,["Hannah","Dog"] ]; df = pd.DataFrame(pet_names,columns =["Name","Species"])(来自 Bharath 的帖子)
  • 多选+1
  • 现在你有我的支持了~另外推荐df.query,尤其是多索引
猜你喜欢
  • 2022-06-21
  • 2022-01-14
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 2022-06-15
  • 2016-01-18
  • 1970-01-01
  • 2017-09-23
相关资源
最近更新 更多