回答

收藏

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

技术问答 技术问答 203 人阅读 | 0 人回复 | 2023-09-14

我有一个例子,熊猫数据框df:
" P9 l1 _, i4 L                                col1    col2    col3    col4      00   a     1.0    2.0      3     1   b      NaN    NaN       6        2                                  c      NaN    8.     9     3     3       d      NaN    11.  12      4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             e     13.0    14.  15    55       5                                       55        5             f     17.0    18.    19       6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       g     21.0    22.0    23第二个df1:" n1 R. q9 N: P2 y8 v% Z  q
                                col1    col2    col3    col4      00   a     1.0     2.      3     4    4    e     13.0    14.0     15      5  f     17.0    18.     19       6                 g     21.0    22.0     23我想得到不和df1重叠的df子集。其实我在寻找。SQL中EXCEPT操作数的等效项。/ ^( R; B3 P, ~
我用减去()函数-但这显然是错误的,因为减法执行逐元素的数值减法。所以我收到了一个错误的消息:
/ U7 ]# ?7 x0 L                            TypeError: unsupported operand type(s) for -: 'str' and 'str'所以问题是:熊猫SQL中的EXCEPT什么是等效项?* d; y; H& i# ~
                                                                ( l, F: G1 p4 F9 _0 R4 q
    解决方案:                                                               
! m& e' T7 o5 L( O* U2 a                                                                我认为你首先需要它set_index所有字符串列:% Q7 p9 V9 ^1 m8 @3 A0 n' x
df2 = df.set_index('col1').subtract(df1.set_index('col1'),axis='columns')print (df2)       col2  col3  col4col                                                                                                                               a     0.0   0.0   0.0b      NaN   NaN   NaNc      NaN   NaN   NaNd      NaN   NaN   NaNe     0.0   0.0   0.0f     0.0   0.0   0.0g     0.0   0.0   0.0或者:
- f: j. d7 }) |: O5 [1 ?% bdf2 = df.set_index('col1').subtract(df1.set_index('col1'),axis='columns',fill_value=0)print (df2)       col2  col3  col4col                                                                                                                               a     0.0   0.0   0.0b      NaN   NaN   6.0c      NaN   8.0   9.0d      NaN  11.0  12.0e     0.0   0.0   0.0f     0.0   0.0   0.0g     0.0   0.0   0.0编辑修改后的问题:( z) U$ S: I+ F: n. ]6 S
print (df.isin(df1)    col1   col2   col3   col40   True   True   True   True1  False  False  False  False2  False  False  False  False3  False  False  False  False4   True   True   True   True5   True   True   True   True6   True   True   True   Trueprint (df.isin(df1).all(axis=1))0     True1    False2    False3    False4     True5     True6     Truedtype: boolprint (~df.isin(df1).all(axis=1)0    False1     True2     True3     True4    False5    False6    Falsedtype: boolprint (df[~(df.isin(df1).all(axis=)) col1  col2  col3  col41    b   NaN   NaN      62         c   NaN   8.     933           d   NaN  11.
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则