很抱歉刚刚进入熊猫,这似乎应该是一个非常直截了当的问题。如何使用isin('X')
删除列表X
中的行?在R中我会写!哪个(在%b中为%a)
。
您所要做的就是创建数据帧的子集,其中isin方法的计算结果为False:
df = df[df['Column Name'].isin(['Value']) == False]
可以使用numpy.logical_not
反转isin
返回的布尔数组:
In [63]: s = pd.Series(np.arange(10.0))
In [64]: x = range(4, 8)
In [65]: mask = np.logical_not(s.isin(x))
In [66]: s[mask]
Out[66]:
0 0
1 1
2 2
3 3
8 8
9 9
如Wes McKinney的评论所示,您也可以使用
s[~s.isin(x)]
你有很多选择。整理上面的一些答案和这篇文章中被接受的答案,你可以做:
1<代码>df[-df[“列”].isin([“值”])]
2<代码>df[~df[“列”].isin([“值”])]
3df[df[“column”]。isin([“value”])==False]
4df[np.logical_not(df[“column”].isin([“value”])]]
注意:对于的选项4,您需要将numpy导入为np
更新:您也可以使用。查询
方法。这允许方法链接:
5。df.query("列不在@值中")
。
其中值
是您不想包含的值的列表。
请注意,在转向您之前,我已经浏览了各种帖子。事实上,我尝试实现中提供的解决方案:基于“notin”条件从数据帧中删除行 我的问题如下。让我们假设我有一个巨大的数据帧,我想删除重复的数据帧。我很清楚我可以使用drop_duplicates,因为这是最快的最简单的方法。然而,我们的老师希望我们创建一个包含重复项ID的列表,然后根据这些值是否包含在上述列表中删除它们。 现在,让我们看看输出: 因此,我得
问题内容: 我有一张看起来像这样的桌子 表格1 ID,名称 如何编写查询以删除所有具有重复名称的行,但保留具有较低ID的行? 问题答案: 如果您使用的是SQL Server 2005或更高版本: 如果使用SQL Server 2000及更低版本
问题内容: 我有一个注释表,其结构如下: 我有很多重复的评论,名字和电子邮件都一样。我需要删除它们,有人可以建议我如何使用一个查询来实现此目标吗? 谢谢 问题答案:
问题内容: 我需要执行分组依据,但只能在满足条件的行上执行,否则返回不满足条件的所有行。例如,在下表中,我只希望对“活动”字段中具有“ 1”的行进行分组,并返回所有没有的行。 表格(ID,标签,有效): 将返回: 问题答案: 这是我能想到的最简单的方法。这是group by中的一个案例。如果满足条件,则按标签分组,否则按主键分组。 如果要按活动分组并标记: 编辑:我误解了您要分组的字段。现在已更正
问题内容: 尝试从Sybase到Microsoft SQL进行OPENQUERY时,我遇到错误: 通过OPENQUERY和OPENROWSET获得的结果集中不允许重复的列名。列名称“ PatientID”是重复的。 我建立的查询基于相似的entryID和PatientID联接了2个表。 例如: 当然,真正的查询不仅包含更多信息。 是否有重命名或删除AdmID和PatID列之一的好方法? 我尝试过: