基于列中的多个条件删除行(使用Python)

基于列中的多个条件删除行(使用Python),python,pandas,numpy,Python,Pandas,Numpy,我有一个数据集df,如果列包含某个值,我希望从中删除行 期望输出: value pod 2 ok 4 sure 如果pod列包含单词“hi”或单词“no”,我希望删除该行 这就是我正在做的 df1 = df.drop(df.index[df['pod'] == 'hi', 'no'], inplace = True) 我不断地发现这个错误: 试图在数据帧切片的副本上设置值 我仍在对此进行研究,欢迎您提出任何建议我相信您应该使用isin: df1 =

我有一个数据集df,如果列包含某个值,我希望从中删除行

期望输出:

  value   pod

  2       ok
  4       sure
如果pod列包含单词“hi”或单词“no”,我希望删除该行

这就是我正在做的

df1 = df.drop(df.index[df['pod'] == 'hi', 'no'], inplace = True)
我不断地发现这个错误:

试图在数据帧切片的副本上设置值


我仍在对此进行研究,欢迎您提出任何建议

我相信您应该使用
isin

df1 = df[~df['pod'].isin(['hi','no']) ]

print(df1)
输出:

   value   pod
1      2    ok
3      4  sure
另一方面,请看以下内容:

df.drop(df.index[df['pod'] == 'hi', 'no'], inplace = True)
如果要工作,
inplace=True
强制
drop
命令在inplace中工作,并返回
None
。所以

df1 = df.drop(df.index[df['pod'] == 'hi', 'no'], inplace = True)

这意味着
df1
None
,而不是数据帧。

好的,谢谢。我只是尝试了第一个建议,但仍然有相同的行数。让我试试后者——我有多个列有关系吗?如果你有更多的列就没关系了。如果你的牢房里还有其他东西,这很重要。例如,
isin(['hi','no'])
无法检测到
'hi'
。ok@quang,我的数据类型显示的是对象而不是字符串是否重要?我会接受,因为它适用于我的样本数据集,但由于某种原因它不适用于我的完整数据集。我在完整的数据集中只有3列。我希望删除的值类似于以下内容:SJ4、IA9等-不确定为什么不会work@Lynnette就像我说的那样,
'hi'
,有一个尾随空格,不能用
isin
检测到,它可以找到准确的值
str.contains
搜索子字符串并将其工作。
df1 = df.drop(df.index[df['pod'] == 'hi', 'no'], inplace = True)