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

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

谢谢!

posted @ 2019-05-10 17:02  布里塔  阅读(392)  评论(0编辑  收藏  举报