gpt4 book ai didi

python - Pandas SQL 中 EXCEPT 子句的类似物是什么?

转载 作者:太空狗 更新时间:2023-10-29 22:25:03 25 4
gpt4 key购买 nike

我有一个样本 pandas 数据框 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

我想得到 df 中不与 df1 重叠的子集。实际上,我正在寻找 SQL 中 EXCEPT 操作数的等价物。

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

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

所以问题是:SQL for Pandas 中的 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

关于python - Pandas SQL 中 EXCEPT 子句的类似物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com