• 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' 代表有重复则全部删除

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

    谢谢!

  • 相关阅读:
    深拷贝浅拷贝
    mock demo
    django 2. 配置信息
    django 1. 入门基础
    java 12. 方法重载
    java 11. 设计规约
    java 10. 参数返回值问题
    java 9. 面向对象之方法设计
    java 8. 面向对象之属性
    java 7. 多维数组
  • 原文地址:https://www.cnblogs.com/chendongblog/p/10845450.html
Copyright © 2020-2023  润新知