zoukankan      html  css  js  c++  java
  • Python pandas库和MS SQL的等价操作->并集,交集,差集

    记录pandas中实现和SQL相同操作的语句

    union all -- 不去重

    union -- 自带distinct去重

    intersect  -- 自带distinct去重

    except  -- 自带distinct去重

     1 #coding=gbk
     2 import numpy as np
     3 import pandas as pd
     4 from pandas import DataFrame,Series
     5 df1=DataFrame({'a':[1,2,3],'b':[4,5,6]})
     6 df2=DataFrame({'a':[1,2,8],'b':[4,7,9]})
     7 print('df1')
     8 print(df1)
     9 print('df2')
    10 print(df2)
    11 print('union all的结果')
    12 print(pd.concat([df1,df2]))
    13 print('union的结果')
    14 print(pd.concat([df1,df2]).drop_duplicates())
    15 print('union并且重建索引的结果')
    16 print(pd.concat([df1,df2]).drop_duplicates().reset_index(drop=True))
    17 print('intersect的结果')
    18 print(df1.merge(df2).drop_duplicates())
    19 print('伪except的结果')
    20 print(df1[-df1.isin(df2)].dropna(how='all'))
    21 print('except的结果')
    22 print(df1.append(df2).append(df2).drop_duplicates(keep=False))

    结果如下

    drop_duplicates()的默认keep='first' 保留第一个  keep='False' 代表有重复则全部删除

    可能在某种情况下并不完全等价 仅提供参考

    谢谢!

  • 相关阅读:
    CF251D
    P6914
    CF1100F
    双连通 / 圆方树 胡扯笔记
    P4082
    SparkSql使用Hive中注册的UDF函数报类找不到问题解决
    Oracle 查询时使用时间作为where报错hour must be between 1 and 12
    【面试-python】
    Linux和Git
    AMBA初探
  • 原文地址:https://www.cnblogs.com/chendongblog/p/10845450.html
Copyright © 2011-2022 走看看