基于列中的多个条件删除行(使用Python)
我有一个数据集df,如果列包含某个值,我希望从中删除行 期望输出:基于列中的多个条件删除行(使用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 =
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)