網站首頁 編程語言 正文
前幾天在一個群里面,看到一位朋友,說到自己的阿里面試,被問了一些關于pandas的使用。其中一個問題是:pandas中合并數據的5中方法。
今天借著這個機會,就為大家盤點一下pandas中合并數據的5個函數。但是對于每個函數,我這里不打算詳細說明,具體用法大家可以參考pandas官當文檔。
- join主要用于基于索引的橫向合并拼接;
- merge主要用于基于指定列的橫向合并拼接;
- concat可用于橫向和縱向合并拼接;
- append主要用于縱向追加;
- combine可以通過使用函數,把兩個DataFrame按列進行組合。
join
join是基于索引的橫向拼接,如果索引一致,直接橫向拼接。如果索引不一致,則會用Nan值填充。
索引一致
x = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']},
index=[0, 1, 2])
y = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
'D': ['D0', 'D2', 'D3']},
index=[0, 1, 2])
x.join(y)
結果如下:
索引不一致
x = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']},
index=[0, 1, 2])
y = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
'D': ['D0', 'D2', 'D3']},
index=[1, 2, 3])
x.join(y)
結果如下:
merge
merge是基于指定列的橫向拼接,該函數類似于關系型數據庫的連接方式,可以根據一個或多個鍵將不同的DatFrame連接起來。該函數的典型應用場景是,針對同一個主鍵存在兩張不同字段的表,根據主鍵整合到一張表里面。
可以指定不同的how參數,表示連接方式,有inner內連、left左連、right右連、outer全連,默認為inner;
x = pd.DataFrame({'姓名': ['張三', '李四', '王五'],
'班級': ['一班', '二班', '三班']})
y = pd.DataFrame({'專業': ['統計學', '計算機', '繪畫'],
'班級': ['一班', '三班', '四班']})
pd.merge(x,y,how="left")
結果如下:
concat
concat函數既可以用于橫向拼接,也可以用于縱向拼接。
縱向拼接
x = pd.DataFrame([['Jack','M',40],['Tony','M',20]], columns=['name','gender','age'])
y = pd.DataFrame([['Mary','F',30],['Bob','M',25]], columns=['name','gender','age'])
z = pd.concat([x,y],axis=0)
z
結果如下:
橫向拼接
x = pd.DataFrame({'姓名': ['張三', '李四', '王五'],
'班級': ['一班', '二班', '三班']})
y = pd.DataFrame({'專業': ['統計學', '計算機', '繪畫'],
'班級': ['一班', '三班', '四班']})
z = pd.concat([x,y],axis=1)
z
結果如下:
append
append主要用于縱向追加數據。
x = pd.DataFrame([['Jack','M',40],['Tony','M',20]], columns=['name','gender','age'])
y = pd.DataFrame([['Mary','F',30],['Bob','M',25]], columns=['name','gender','age'])
x.append(y)
結果如下:
combine
conbine可以通過使用函數,把兩個DataFrame按列進行組合。
x = pd.DataFrame({"A":[3,4],"B":[1,4]})
y = pd.DataFrame({"A":[1,2],"B":[5,6]})
x.combine(y,lambda a,b:np.where(a>b,a,b))
結果如下:
注:上述函數,用于返回對應位置上的最大值。
原文鏈接:https://mp.weixin.qq.com/s/Mt_veB6qg7pM_w-ao4J14A
相關推薦
- 2022-04-28 Go語言錯誤處理異常捕獲+異常拋出_Golang
- 2023-05-21 python?jinjia2的項目使用_python
- 2022-07-09 Redis中Bitmap的使用示例_Redis
- 2022-03-25 Postman如何導出接口的幾種方法(postman怎么把接口導出來)
- 2025-02-10 window11 系統安裝 yarn
- 2022-11-03 Python中的def?__init__(?)函數_python
- 2022-12-10 ijkplayer打包支持https的so使用詳解_Android
- 2022-07-28 pytest使用parametrize將參數化變量傳遞到fixture_python
- 最近更新
-
- 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同步修改后的遠程分支