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 col4col1 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
要么:
df2 = df.set_index('col1').subtract(df1.set_index('col1'),axis='columns',fill_value=0)print (df2) col2 col3 col4col1 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
编辑问题编辑:
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=1))]) col1 col2 col3 col41 b NaN NaN 62 c NaN 8.0 93 d NaN 11.0 12总结
以上是内存溢出为你收集整理的python – Pandas中SQL中EXCEPT子句的类比是什么?全部内容,希望文章能够帮你解决python – Pandas中SQL中EXCEPT子句的类比是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)