Pandas取交集、并集、差集
2021-06-25 本文已影响0人
小杨同学97
数据合并有多种方式,其中最常见的应该就是交集、并集差集的求取。
取交集
pandas数据merge功能默认的行为是交集,inner连接
import pandas as pd
df1=pd.DataFrame([
['1','张三'],
['2','王丽'],
['3','王麻子'],
['4','王二虎'],
],columns=['id','name'])
df2=pd.DataFrame([
['2','王丽'],
['3','王麻子'],
['5','大飞'],
['6','小明'],
],columns=['id','name'])
pd.merge(df1,df2,on=['id','name'])
id | name | |
---|---|---|
0 | 2 | 王丽 |
1 | 3 | 王麻子 |
取并集
how
的取值有'left','right','inner','outer',默认是inner
。
pd.merge(df1,df2,on=['id','name'],how='outer')
id | name | |
---|---|---|
0 | 1 | 张三 |
1 | 2 | 王丽 |
2 | 3 | 王麻子 |
3 | 4 | 王二虎 |
4 | 5 | 大飞 |
5 | 6 | 小明 |
取差集
先添加到后面,再删除重复出现的。
df5=pd.DataFrame([
['1','张三'],
['2','王丽'],
['3','王麻子'],
['4','王二虎'],
],columns=['id','name'])
df6=pd.DataFrame([
['2','王丽'],
['3','王麻子']
],columns=['id','name'])
df5=df5.append(df6)
df5
id | name | |
---|---|---|
0 | 1 | 张三 |
1 | 2 | 王丽 |
2 | 3 | 王麻子 |
3 | 4 | 王二虎 |
0 | 2 | 王丽 |
1 | 3 | 王麻子 |
df5=df5.drop_duplicates(subset=['id'],keep=False)
df5
id | name | |
---|---|---|
0 | 1 | 张三 |
3 | 4 | 王二虎 |