網站首頁 編程語言 正文
一、簡介
Python的數據類型集合:由不同元素組成的集合,集合中是一組無序排列的可 Hash 的值(不可變類型),可以作為字典的Key
Pandas
中的DataFrame
:DataFrame
是一個表格型的數據結構,可以理解為帶有標簽的二維數組。
常用的集合操作如下圖所示:
二、交集
-
pandas
的merge
功能默認為 inner 連接,可以實現取交集 - 集合
set
可以直接用 & 取交集
import pandas as pd print("CSDN葉庭云:https://yetingyun.blog.csdn.net/") set1 = {"Python", "Go", "C++", "Java"} set2 = {"Go", "C++", "JavaScript", "C"} set1 & set2 df1 = pd.DataFrame([ ? ? ? ? ['1', 'Python'], ? ? ? ? ['2', 'Go'], ? ? ? ? ['3', 'C++'], ? ? ? ? ['4', 'Java'], ? ? ], columns=['id','name']) df2 = pd.DataFrame([ ? ? ? ? ['2','Go'], ? ? ? ? ['3','C++'], ? ? ? ? ['5','JavaScript'], ? ? ? ? ['6','C'], ? ? ], columns=['id','name']) pd.merge(df1, df2, on=['id','name'])
操作如下所示:
三、并集
- Pandas的 merge 方法里參數 how 的取值有 “left”, “right”, “inner”, “outer”,默認是inner。outer外連接可以實現取并集。另一種方法也可以df1.append(df2)后去重,保留第一次出現的也可以實現取并集。
- 集合 set 可以直接用 | 取并集
set1 = {"Python", "Go", "C++", "Java"} set2 = {"Go", "C++", "JavaScript", "C"} set1 | set2 print("CSDN葉庭云:https://yetingyun.blog.csdn.net/") df1 = pd.DataFrame([ ? ? ? ? ['1', 'Python'], ? ? ? ? ['2', 'Go'], ? ? ? ? ['3', 'C++'], ? ? ? ? ['4', 'Java'], ? ? ], columns=['id','name']) df2 = pd.DataFrame([ ? ? ? ? ['2','Go'], ? ? ? ? ['3','C++'], ? ? ? ? ['5','JavaScript'], ? ? ? ? ['6','C'], ? ? ], columns=['id','name']) pd.merge(df1, df2, ? ? ? ? ?on=['id','name'], ? ? ? ? ?how='outer') ? ? ? ? ? df3 = df1.append(df2) df3.drop_duplicates(subset=['id'], keep="first")
四、差集
set1 = {"Python", "Go", "C++", "Java"} set2 = {"Go", "C++", "JavaScript", "C"} set1 - set2 print("CSDN葉庭云:https://yetingyun.blog.csdn.net/") set1 = {"Python", "Go", "C++", "Java"} set2 = {"Go", "C++", "JavaScript", "C"} set2 - set1 # df1-df2 df1 = pd.DataFrame([ ? ? ? ? ['1', 'Python'], ? ? ? ? ['2', 'Go'], ? ? ? ? ['3', 'C++'], ? ? ? ? ['4', 'Java'], ? ? ], columns=['id','name']) df2 = pd.DataFrame([ ? ? ? ? ['2','Go'], ? ? ? ? ['3','C++'], ? ? ? ? ['5','JavaScript'], ? ? ? ? ['6','C'], ? ? ], columns=['id','name']) df1 = df1.append(df2) df1 = df1.append(df2) set_diff_df = df1.drop_duplicates(subset=df1.columns, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? keep=False) set_diff_df # df2-df1 df1 = pd.DataFrame([ ? ? ? ? ['1', 'Python'], ? ? ? ? ['2', 'Go'], ? ? ? ? ['3', 'C++'], ? ? ? ? ['4', 'Java'], ? ? ], columns=['id','name']) df2 = pd.DataFrame([ ? ? ? ? ['2','Go'], ? ? ? ? ['3','C++'], ? ? ? ? ['5','JavaScript'], ? ? ? ? ['6','C'], ? ? ], columns=['id','name']) print("CSDN葉庭云:https://yetingyun.blog.csdn.net/") df2 = df2.append(df1) df2 = df2.append(df1) set_diff_df = df2.drop_duplicates(subset=df2.columns, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? keep=False) set_diff_df # df1-df2 df1 = pd.DataFrame([ ? ? ? ? ['1', 'Python'], ? ? ? ? ['2', 'Go'], ? ? ? ? ['3', 'C++'], ? ? ? ? ['4', 'Java'], ? ? ], columns=['id','name']) df2 = pd.DataFrame([ ? ? ? ? ['2','Go'], ? ? ? ? ['3','C++'], ? ? ? ? ['5','JavaScript'], ? ? ? ? ['6','C'], ? ? ], columns=['id','name']) pd.concat([df1, df2, df2]).drop_duplicates(keep=False) # df2-df1 df1 = pd.DataFrame([ ? ? ? ? ['1', 'Python'], ? ? ? ? ['2', 'Go'], ? ? ? ? ['3', 'C++'], ? ? ? ? ['4', 'Java'], ? ? ], columns=['id','name']) df2 = pd.DataFrame([ ? ? ? ? ['2','Go'], ? ? ? ? ['3','C++'], ? ? ? ? ['5','JavaScript'], ? ? ? ? ['6','C'], ? ? ], columns=['id','name']) pd.concat([df2, df1, df1]).drop_duplicates(keep=False)
五、對稱差集
print("CSDN葉庭云:https://yetingyun.blog.csdn.net/") set1 = {"Python", "Go", "C++", "Java"} set2 = {"Go", "C++", "JavaScript", "C"} set1 ^ set2 ? ?# 對稱差集 # 去重 ? 不保留重復的:即可實現取對稱差集 df3 = df1.append(df2) df3.drop_duplicates(subset=['id'], keep=False)
原文鏈接:https://blog.csdn.net/fyfugoyfa/article/details/122588761
相關推薦
- 2024-01-27 Linux關于Centos IP靜態配置
- 2022-11-19 Python變量和數據類型和數據類型的轉換_python
- 2022-04-05 報錯:Can‘t locate Debian/Debhelper/Dh_Lib.pm in @INC
- 2022-11-05 Android開發使用Databinding實現關注功能mvvp_Android
- 2022-10-30 Android常用定時器的實現方式_Android
- 2023-05-06 Python格式化輸出的幾種匯總_python
- 2022-07-19 springboot繼承swagger3
- 2022-12-29 一文帶你了解Go語言中方法的調用_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支