python – Pandas中SQL中EXCEPT子句的类比是什么?
发布时间:2020-12-16 23:01:44 所属栏目:Python 来源:网络整理
导读:我有一个示例pandas dataframe 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
|
我有一个示例pandas dataframe 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操作数. 我使用了subtract()函数 – 但这显然是错误的,因为减法执行元素数字减法.所以我收到一条错误消息: TypeError: unsupported operand type(s) for -: 'str' and 'str' 所以问题是:在Pandas的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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |








