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. |
|
|
|
|
|