pandas DataFrame 交集并集补集的实现


Posted in Python onJune 24, 2019

1.场景,对于colums都相同的dataframe做过滤的时候

例如:

df1 = DataFrame([['a', 10, '男'], 
         ['b', 11, '男'], 
         ['c', 11, '女'], 
         ['a', 10, '女'],
         ['c', 11, '男']], 
        columns=['name', 'age', 'sex'])

df2 = DataFrame([['a', 10, '男'], 
         ['b', 11, '女']],
        columns=['name', 'age', 'sex'])

取交集:print(pd.merge(df1,df2,on=['name', 'age', 'sex']))

取并集:print(pd.merge(df1,df2,on=['name', 'age', 'sex'], how='outer'))

取差集(从df1中过滤df1在df2中存在的行):

df1 = df1.append(df2)
df1 = df1.append(df2)
df1 = df1.drop_duplicates(subset=['name', 'age', 'sex'],keep=False)
print(df1)

代码:

# -*- coding:utf-8 -*-
__version__ = '1.0.0.0'
"""
@brief :  简介
@details:  详细信息
@author :  zhphuang
@date  :  2018-10-29
"""

import pandas as pd
from pandas import *

df1 = DataFrame([['a', 10, '男'],
         ['b', 11, '男'],
         ['c', 11, '女'],
         ['a', 10, '女'],
         ['c', 11, '男']],
        columns=['name', 'age', 'sex'])
print("df1:\n%s\n\n" % df1)
df2 = DataFrame([['a', 10, '男'],
         ['b', 11, '女']],
        columns=['name', 'age', 'sex'])
print("df2:\n%s\n\n" % df2)
# 取交集
print("交集:\n%s\n\n" % pd.merge(df1,df2,on=['name', 'age', 'sex']))

# 取并集
print("并集:\n%s\n\n" % pd.merge(df1,df2,on=['name', 'age', 'sex'], how='outer'))

# 从df1中过滤df1在df2中存在的行,也就是取补集
df1 = df1.append(df2)
df1 = df1.append(df2)
print("补集(从df1中过滤df1在df2中存在的行):\n%s\n\n" % df1.drop_duplicates(subset=['name', 'age', 'sex'],keep=False))

截图

pandas DataFrame 交集并集补集的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用线程封装的一个简单定时器类实例
May 16 Python
简单谈谈Python流程控制语句
Dec 04 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python中的常量和变量代码详解
Jul 25 Python
Python sorted函数详解(高级篇)
Sep 18 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
python requests.post带head和body的实例
Jan 02 Python
django fernet fields字段加密实践详解
Aug 12 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
python求前n个阶乘的和实例
Apr 02 Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 #Python
pandas.cut具体使用总结
Jun 24 #Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 #Python
python日期相关操作实例小结
Jun 24 #Python
使用Python Pandas处理亿级数据的方法
Jun 24 #Python
Python3批量生成带logo的二维码方法
Jun 24 #Python
解决python文件双击运行秒退的问题
Jun 24 #Python
You might like
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
javascript document.referrer 用法
2009/04/30 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
四年大学自我鉴定
2014/02/17 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
教师批评与自我批评
2014/10/15 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
追悼词范文大全
2015/06/23 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
Python几种酷炫的进度条的方式
2022/04/11 Python