前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas差集-交集-并集求解

Pandas差集-交集-并集求解

作者头像
皮大大
发布2023-08-25 11:14:47
2340
发布2023-08-25 11:14:47
举报

Pandas求解差集、交集、并集

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

模拟数据

模拟一份简单的数据:

In [1]:

代码语言:javascript
复制
import pandas as pd

In [2]:

代码语言:javascript
复制
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]:

代码语言:javascript
复制
df1

Out[3]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

In [4]:

代码语言:javascript
复制
df2

Out[4]:

col1

col2

0

1

6

1

3

8

2

7

10

两个DataFrame的相同部分:

差集

方法1:concat + drop_duplicates

In [5]:

代码语言:javascript
复制
df3 = pd.concat([df1,df2])
df3

Out[5]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

0

1

6

1

3

8

2

7

10

In [6]:

代码语言:javascript
复制
# 结果1

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

Out[6]:

col1

col2

1

2

7

3

4

9

4

5

10

2

7

10

方法2:append + drop_duplicates

In [7]:

代码语言:javascript
复制
df4 = df1.append(df2)
df4

Out[7]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

0

1

6

1

3

8

2

7

10

In [8]:

代码语言:javascript
复制
# 结果2

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

Out[8]:

col1

col2

1

2

7

3

4

9

4

5

10

2

7

10

交集

方法1:merge

In [9]:

代码语言:javascript
复制
# 结果

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

df5

Out[9]:

col1

col2

0

1

6

1

3

8

方法2:concat + duplicated + loc

In [10]:

代码语言:javascript
复制
df6 = pd.concat([df1,df2])
df6

Out[10]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

0

1

6

1

3

8

2

7

10

In [11]:

代码语言:javascript
复制
s = df6.duplicated(subset=['col1','col2'], keep='first')
s

Out[11]:

代码语言:javascript
复制
0    False
1    False
2    False
3    False
4    False
0     True
1     True
2    False
dtype: bool

In [12]:

代码语言:javascript
复制
# 结果
df8 = df6.loc[s == True]
df8

Out[12]:

col1

col2

0

1

6

1

3

8

方法3:concat + groupby + query

In [13]:

代码语言:javascript
复制
# df6 = pd.concat([df1,df2])

df6

Out[13]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

0

1

6

1

3

8

2

7

10

In [14]:

代码语言:javascript
复制
df9 = df6.groupby(["col1", "col2"]).size().reset_index()
df9.columns = ["col1", "col2", "count"]

df9

Out[14]:

col1

col2

count

0

1

6

2

1

2

7

1

2

3

8

2

3

4

9

1

4

5

10

1

5

7

10

1

In [15]:

代码语言:javascript
复制
df10 = df9.query("count > 1")[["col1", "col2"]]
df10

Out[15]:

col1

col2

0

1

6

2

3

8

并集

方法1:concat + drop_duplicates

In [16]:

代码语言:javascript
复制
df11 = pd.concat([df1,df2])
df11

Out[16]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

0

1

6

1

3

8

2

7

10

In [17]:

代码语言:javascript
复制
# 结果

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

Out[17]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

2

7

10

方法2:append + drop_duplicates

In [18]:

代码语言:javascript
复制
df13 = df1.append(df2)

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

Out[18]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

2

7

10

方法3:merge

In [19]:

代码语言:javascript
复制
pd.merge(df1,df2,how="outer")

Out[19]:

col1

col2

0

1

6

1

2

7

2

3

8

3

4

9

4

5

10

5

7

10

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-7-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Pandas求解差集、交集、并集
  • 模拟数据
  • 差集
    • 方法1:concat + drop_duplicates
      • 方法2:append + drop_duplicates
      • 交集
        • 方法1:merge
          • 方法2:concat + duplicated + loc
            • 方法3:concat + groupby + query
            • 并集
              • 方法1:concat + drop_duplicates
                • 方法2:append + drop_duplicates
                  • 方法3:merge
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档