網站首頁 編程語言 正文
Pandas數據可以實現縱向和橫向連接,將數據連接后會形成一個新對象(Series或DataFrame)
連接是最常用的多個數據合并操作
pd.concat()是專門用于數據連接合并的函數,它可以沿著行或列進行操作,同時可以指定非合并軸的合并方式(如合集、交集等)
pd.concat()會返回一個合并后的DataFrame
語法
pd.concat(objs, axis=0, join='outer', ignore_index=False,
keys=None, levels=None, names=None, sort=False,
verify_integrity=False, copy=True)
參數?
- objs: 需要連接的數據,可以是多個DataFrame或者Series,它是必傳參數
- axis: 連接軸的方法,默認值為0,即按行連接,追加在行后面;值為1時追加到列后面(按列連接:axis=1)
- join: 合并方式,其他軸上的數據是按交集(inner)還是并集(outer)進行合并
- ignore_index: 是否保留原來的索引
- keys: 連接關系,使用傳遞的鍵作為最外層級別來構造層次結構索引,就是給每個表指定一個一級索引
- names: 索引的名稱,包括多層索引
- verify_integrity: 是否檢測內容重復;參數為True時,如果合并的數據與原數據包含索引相同的行,則會報錯
- copy: 如果為False,則不要深拷貝
1.按行連接
pd.concat()的基本操作可以實現df.append()功能
操作中ignore_index和sort參數的作用是一樣的,axis默認取值為0,即按行連接
import pandas as pd
df1 = pd.DataFrame({'x':[1,2],'y':[3,4]})
df2 = pd.DataFrame({'x':[5,6],'y':[7,8]})
res1 = pd.concat([df1,df2])
# 效果同上
res2 = df1.append(df2)
df1
df2
res1
res2?
2.按列連接?
如果要將多個DataFrame按列拼接在一起,可以傳入axis=1參數,這會將不同的數據追加到列的后面,索引無法對應的位置上將值填充為NaN
import pandas as pd
df1 = pd.DataFrame({'x':[1,2],'y':[3,4]})
df2 = pd.DataFrame({'x':[5,6,0],'y':[7,8,0]})
res = pd.concat([df1,df2], axis=1)
df1
df2
res?
該例子中,df2比df1多一行,合并后df1的部分為NaN?
3.合并交集
上述兩個練習案例的連接操作會得到兩個表內容的并集(默認是join='outer')
合并交集需要將join參數進行改變 join='inner'
import pandas as pd
df1 = pd.DataFrame({'x':[1,2],'y':[3,4]})
df2 = pd.DataFrame({'x':[5,6,0],'y':[7,8,0]})
# 按列合并交集
# 傳入join='inner'取得兩個DataFrame的共有部分,去除了df1沒有的第三行內容
res = pd.concat([df1,df2], axis=1, join='inner')
df1
df2
res?
擴展?
通過reindex()方法也可以實現取交集功能
# 兩種方法
res1 = pd.concat([df1,df2],axis=1).reindex(df1.index)
res2 = pd.concat([df1,df2.reindex(df1.index)],axis=1)
res1
res2?
4.與序列合并?
import pandas as pd
z = pd.Series([9,9],name='z')
df = pd.DataFrame({'x':[1,2],'y':[3,4]})
# 將序列加到新列
res = pd.concat([df,z],axis=1)
z
df
res?
5.指定索引
import pandas as pd
df1 = pd.DataFrame({'x':[1,2],'y':[3,4]})
df2 = pd.DataFrame({'x':[5,6],'y':[7,8]})
# 指定索引名
res1 = pd.concat([df1,df2], keys=['a','b'])
# 以字典形式傳入
dict = {'a':df1, 'b':df2}
res2 = pd.concat(dict)
# 橫向合并,指定索引
res3 = pd.concat([df1,df2], axis=1, keys=['a','b'])
df1
df2
res1
res2
res3?
原文鏈接:https://blog.csdn.net/Hudas/article/details/123009834
相關推薦
- 2022-03-11 解決 fatal error LNK1120: 1 unresolved externals 問題
- 2024-07-18 Spring Security之配置體系
- 2023-10-26 解決:NODE_ENV 不是內部或外部命令,也不是可運行的程序,或者批處理文件
- 2023-12-06 Binding to target org.springframework.boot.autocon
- 2022-04-19 c#中token的使用方法實例_C#教程
- 2023-11-19 樹莓派/arm設備上安裝火狐Firefox瀏覽器
- 2022-05-06 Python?Pandas條件篩選功能_python
- 2022-04-29 C#開發Winform控件之打開文件對話框OpenFileDialog類_C#教程
- 最近更新
-
- 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同步修改后的遠程分支