详解利用Pandas求解两个DataFrame的差集,交集,并集

 更新时间:2022年07月15日 08:34:07   作者:尤而小屋  
这篇文章主要和大家讲解一下如何利用Pandas函数求解两个DataFrame的差集、交集、并集,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

大家好,我是Peter~

本文讲解的是如何利用Pandas函数求解两个DataFrame的差集、交集、并集。

模拟数据

模拟一份简单的数据:

In [1]:

import pandas as pd

In [2]:

df1 = pd.DataFrame({"col1":[1,2,3,4,5],
                    "col2":[6,7,8,9,10]
                   })

df2 = pd.DataFrame({"col1":[1,3,7],
                    "col2":[6,8,10]
                   })

In [3]:

df1

Out[3]:

 col1col2
016
127
238
349
4510

In [4]:

df2

Out[4]:

 col1col2
016
138
2710

两个DataFrame的相同部分:

差集

方法1:concat + drop_duplicates

In [5]:

df3 = pd.concat([df1,df2])
df3

Out[5]:

 col1col2
016
127
238
349
4510
016
138
2710

In [6]:

# 结果1

df3.drop_duplicates(["col1","col2"],keep=False)

Out[6]:

 col1col2
127
349
4510
2710

方法2:append + drop_duplicates

In [7]:

df4 = df1.append(df2)
df4

Out[7]:

 col1col2
016
127
238
349
4510
016
138
2710

In [8]:

# 结果2

df4.drop_duplicates(["col1","col2"],keep=False)

Out[8]:

 col1col2
127
349
4510
2710

交集

方法1:merge

In [9]:

# 结果

# 等效:df5 = pd.merge(df1, df2, how="inner")
df5 = pd.merge(df1,df2)

df5

Out[9]:

 col1col2
016
138

方法2:concat + duplicated + loc

In [10]:

df6 = pd.concat([df1,df2])
df6

Out[10]:

 col1col2
016
127
238
349
4510
016
138
2710

In [11]:

s = df6.duplicated(subset=['col1','col2'], keep='first')
s

Out[11]:

0    False
1    False
2    False
3    False
4    False
0     True
1     True
2    False
dtype: bool

In [12]:

# 结果
df8 = df6.loc[s == True]
df8

Out[12]:

 col1col2
016
138

方法3:concat + groupby + query

In [13]:

# df6 = pd.concat([df1,df2])

df6

Out[13]:

 col1col2
016
127
238
349
4510
016
138
2710

In [14]:

df9 = df6.groupby(["col1", "col2"]).size().reset_index()
df9.columns = ["col1", "col2", "count"]

df9

Out[14]:

 col1col2count
0162
1271
2382
3491
45101
57101

In [15]:

df10 = df9.query("count > 1")[["col1", "col2"]]
df10

Out[15]:

 col1col2
016
238

并集

方法1:concat + drop_duplicates

In [16]:

df11 = pd.concat([df1,df2])
df11

Out[16]:

 col1col2
016
127
238
349
4510
016
138
2710

In [17]:

# 结果

# df12 = df11.drop_duplicates(subset=["col1","col2"],keep="last")
df12 = df11.drop_duplicates(subset=["col1","col2"],keep="first")
df12

Out[17]:

 col1col2
016
127
238
349
4510
2710

方法2:append + drop_duplicates

In [18]:

df13 = df1.append(df2)

# df13.drop_duplicates(subset=["col1","col2"],keep="last")
df13.drop_duplicates(subset=["col1","col2"],keep="first")

Out[18]:

 col1col2
016
127
238
349
4510
2710

方法3:merge

In [19]:

pd.merge(df1,df2,how="outer")

Out[19]:

 col1col2
016
127
238
349
4510
5710

以上就是详解利用Pandas求解两个DataFrame的差集,交集,并集的详细内容,更多关于Pandas DataFrame差集 交集 并集的资料请关注脚本之家其它相关文章!

相关文章

  • python opencv对图像进行旋转且不裁剪图片的实现方法

    python opencv对图像进行旋转且不裁剪图片的实现方法

    今天小编就为大家分享一篇python opencv对图像进行旋转且不裁剪图片的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • pytorch实现线性拟合方式

    pytorch实现线性拟合方式

    今天小编就为大家分享一篇pytorch实现线性拟合方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 如何用python绘制雷达图

    如何用python绘制雷达图

    这篇文章主要介绍了如何用python绘制雷达图,帮助大家更好的利用python进行数据分析,感兴趣的朋友可以了解下
    2021-04-04
  • web.py在SAE中的Session问题解决方法(使用mysql存储)

    web.py在SAE中的Session问题解决方法(使用mysql存储)

    这篇文章主要介绍了web.py在SAE中的Session问题解决方法(使用mysql存储),本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • Matplotlib中%matplotlib inline如何使用

    Matplotlib中%matplotlib inline如何使用

    这篇文章主要介绍了Matplotlib中%matplotlib inline如何使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • python批量修改文件名的三种方法实例

    python批量修改文件名的三种方法实例

    同事最近有个需求,需要批量修改文件的名称,这篇文章主要给大家介绍了关于python批量修改文件名的三种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 一文带你探索Python中15个常见的魔术方法

    一文带你探索Python中15个常见的魔术方法

    在Python中,特殊方法(也称为魔术方法)是由Python解释器自动调用的,我们不需要手动调用它们,本文小编为大家整理了15个常见特殊方法的实现,希望对大家有所帮助
    2024-01-01
  • 浅析python 动态库m.so.1.0错误问题

    浅析python 动态库m.so.1.0错误问题

    这篇文章主要介绍了python 动态库m.so.1.0错误问题,文中给大家提到了python中使用动态库的方法,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 深入解析python返回函数和匿名函数

    深入解析python返回函数和匿名函数

    这篇文章主要介绍了python返回函数和匿名函数的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Python简单获取网卡名称及其IP地址的方法【基于psutil模块】

    Python简单获取网卡名称及其IP地址的方法【基于psutil模块】

    这篇文章主要介绍了Python简单获取网卡名称及其IP地址的方法,结合实例形式分析了Python基于psutil模块针对本机网卡硬件信息的读取操作简单使用技巧,需要的朋友可以参考下
    2018-05-05

最新评论