当前位置: 首页 > 面试题库 >

Pandas中的SQL中EXCEPT子句的相似之处是什么?

仲孙子辰
2023-03-14
问题内容

我有一个示例熊猫数据框df:

        col1    col2    col3    col4
      0   a      1.0    2.0      3
      1   b      NaN    NaN      6
      2   c      NaN    8.0      9
      3   d      NaN    11.0    12
      4   e     13.0    14.0    15
      5   f     17.0    18.0    19
      6   g     21.0    22.0    23

第二个df1:

        col1    col2    col3    col4
      0  a      1.0     2.0      3
      4  e     13.0    14.0     15
      5  f     17.0    18.0     19
      6  g     21.0    22.0     23

我想获取不与df1重叠的df子集。实际上,我正在寻找SQL中EXCEPT操作数的等效项。

我使用了减去()函数-但这显然是错误的,因为减法执行逐元素的数值减法。所以我收到一条错误消息:

       TypeError: unsupported operand type(s) for -: 'str' and 'str'

因此,问题是:熊猫SQL中的EXCEPT等效项是什么?


问题答案:

我认为您首先需要set_index所有字符串列:

df2 = df.set_index('col1').subtract(df1.set_index('col1'), axis='columns')
print (df2)
      col2  col3  col4
col1                  
a      0.0   0.0   0.0
b      NaN   NaN   NaN
c      NaN   NaN   NaN
d      NaN   NaN   NaN
e      0.0   0.0   0.0
f      0.0   0.0   0.0
g      0.0   0.0   0.0

或者:

df2 = df.set_index('col1').subtract(df1.set_index('col1'), axis='columns', fill_value=0)
print (df2)
      col2  col3  col4
col1                  
a      0.0   0.0   0.0
b      NaN   NaN   6.0
c      NaN   8.0   9.0
d      NaN  11.0  12.0
e      0.0   0.0   0.0
f      0.0   0.0   0.0
g      0.0   0.0   0.0

通过修改后的问题进行编辑:

print (df.isin(df1))
    col1   col2   col3   col4
0   True   True   True   True
1  False  False  False  False
2  False  False  False  False
3  False  False  False  False
4   True   True   True   True
5   True   True   True   True
6   True   True   True   True

print (df.isin(df1).all(axis=1))
0     True
1    False
2    False
3    False
4     True
5     True
6     True
dtype: bool

print (~df.isin(df1).all(axis=1))
0    False
1     True
2     True
3     True
4    False
5    False
6    False
dtype: bool

print (df[~(df.isin(df1).all(axis=1))])
  col1  col2  col3  col4
1    b   NaN   NaN     6
2    c   NaN   8.0     9
3    d   NaN  11.0    12


 类似资料:
  • 问题内容: 在过去的几个小时中,我一直在查看SO上的nlp标签,并且我有信心没有任何遗漏,但是如果我错过了,请指出我的问题。 在此同时,我将描述我要做什么。我在许多帖子中观察到的一个常见概念是语义相似性很困难。例如,从这篇文章中,接受的解决方案建议以下内容: 我的高级要求是利用k- means聚类并基于语义相似性对文本进行分类,因此我所需要知道的是它们是否是近似匹配。例如,在上面的示例中,我可以将

  • 问题内容: 我正在尝试使用该子句从表中检索数据。我想从中获取除存在的行以外的所有行。据我了解,以下内容不起作用: 我可以使用的唯一方法似乎是从相同的表中选择,或者从不同的表中选择具有相同列名的列。 有人可以解释一下如何最好地使用解释子句吗? 问题答案: 您的查询似乎完全有效: 列 名 与查询无关。只有 数据类型 必须匹配。您的查询的输出列名称为,仅因为它是first中的列名称。您可以使用任何别名。

  • 问题内容: MySQL提供了一个名为FIELD()的字符串函数,该函数接受可变数量的参数。返回值是第一个参数在其余参数列表中的位置。换一种说法: 将返回4,因为’d’是第一个参数之后的第四个参数。 此功能提供了根据非常特定的顺序对查询结果进行排序的功能。对于我当前的应用程序,我需要管理四种状态:有效,已批准,已拒绝和已提交。但是,如果仅按状态列排序,我会感觉结果列表的可用性降低了,因为拒绝和活动状

  • 问题内容: 给出下表说明: 我有以下3种情况: 情况1完美执行。 情况2无法执行。 情况3也能完美执行。 我的理解是,我们需要确保如果没有对应的联合列,那么我们需要创建一个等效的数据类型哑元。因此,在其他表的相应列列表中具有类似内容的类型。 在情况3中,我们将所有值都指定为null,因此我对此情况有所了解。但是在情况1中,和之间没有数据类型的兼容性,但是它会执行。另一方面,情况2失败。请说清楚。

  • 问题内容: “&”在这里是什么意思: 问题答案: 这称为位掩码。它用于数字中各个位具有不同含义的情况,而不是数字仅表示数字本身(例如,如果您将年龄保存到数据库中)。 当您以二进制形式想象任何数字并想测试数字中是否设置了某个位时,可以通过对数字和要测试的位使用二进制AND运算符来对其进行测试,如下所示: 用二进制表示,这意味着以下内容(假设您的数字是25): 在这里您可以看到,第5位的数字(从下至上

  • 问题内容: 所以我对Angular js vs Express js的目标有些困惑。根据我的理解,我们使用Node.js来提供Angular js的服务,但是我们并不完全受限于/强制使用Node.js来提供服务。另一方面,Express js似乎完成了与更传统的MVC框架类似的任务。 那么Angular Js是一种非特定于服务器的MVC框架吗?这是否限制了Angular js后端服务器功能或易用性