網站首頁 編程語言 正文
如何使用pandas.concat()函數連接pandas.DataFrame和pandas.Series。
將對以下內容進行說明。
- pandas.concat的基本用法()
- 指定要連接的對象:objs
- 連接方向的指定(垂直/水平):axis
- 指定連接方法(外部連接/內部連接):join
- pandas.DataFrame的連接
- pandas.Series的連接
- pandas.DataFrame和pandas.Series的連接
使用以下的pandas.DataFrame和pandas.Series為例。
import pandas as pd
df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3'],
? ? ? ? ? ? ? ? ? ? 'B': ['B1', 'B2', 'B3'],
? ? ? ? ? ? ? ? ? ? 'C': ['C1', 'C2', 'C3']},
? ? ? ? ? ? ? ? ? ?index=['ONE', 'TWO', 'THREE'])
print(df1)
# ? ? ? ? A ? B ? C
# ONE ? ?A1 ?B1 ?C1
# TWO ? ?A2 ?B2 ?C2
# THREE ?A3 ?B3 ?C3
df2 = pd.DataFrame({'C': ['C2', 'C3', 'C4'],
? ? ? ? ? ? ? ? ? ? 'D': ['D2', 'D3', 'D4']},
? ? ? ? ? ? ? ? ? ?index=['TWO', 'THREE', 'FOUR'])
print(df2)
# ? ? ? ? C ? D
# TWO ? ?C2 ?D2
# THREE ?C3 ?D3
# FOUR ? C4 ?D4
s1 = pd.Series(['X1', 'X2', 'X3'], index=['ONE', 'TWO', 'THREE'], name='X')
print(s1)
# ONE ? ? ?X1
# TWO ? ? ?X2
# THREE ? ?X3
# Name: X, dtype: object
s2 = pd.Series(['Y2', 'Y3', 'Y4'], index=['TWO', 'THREE', 'FOUR'], name='Y')
print(s2)
# TWO ? ? ?Y2
# THREE ? ?Y3
# FOUR ? ? Y4
# Name: Y, dtype: object
pandas.concat的基本用法()
指定要連接的對象:objs
通過參數objs指定要連接的pandas.DataFrame和pandas.Series,指定類型為列表或元組。
df_concat = pd.concat([df1, df2])
print(df_concat)
# A B C D
# ONE A1 B1 C1 NaN
# TWO A2 B2 C2 NaN
# THREE A3 B3 C3 NaN
# TWO NaN NaN C2 D2
# THREE NaN NaN C3 D3
# FOUR NaN NaN C4 D4
要連接的對象的數量不限于兩個,可以是三個或更多。
df_concat_multi = pd.concat([df1, df2, df1])
print(df_concat_multi)
# A B C D
# ONE A1 B1 C1 NaN
# TWO A2 B2 C2 NaN
# THREE A3 B3 C3 NaN
# TWO NaN NaN C2 D2
# THREE NaN NaN C3 D3
# FOUR NaN NaN C4 D4
# ONE A1 B1 C1 NaN
# TWO A2 B2 C2 NaN
# THREE A3 B3 C3 NaN
結果是創建了一個新的對象,原始對象保持不變。
連接方向的指定(垂直/水平):axis
垂直或水平方向由axis參數指定。 如果axis = 0,則它們是垂直鏈接的。默認設置為axis = 0,因此可以省略不寫。
df_v = pd.concat([df1, df2], axis=0)
print(df_v)
# A B C D
# ONE A1 B1 C1 NaN
# TWO A2 B2 C2 NaN
# THREE A3 B3 C3 NaN
# TWO NaN NaN C2 D2
# THREE NaN NaN C3 D3
# FOUR NaN NaN C4 D4
axis = 1,水平方向上連接。
df_h = pd.concat([df1, df2], axis=1)
print(df_h)
# A B C C D
# ONE A1 B1 C1 NaN NaN
# TWO A2 B2 C2 C2 D2
# THREE A3 B3 C3 C3 D3
# FOUR NaN NaN NaN C4 D4
指定連接方法(外部連接/內部連接):join
參數join:指定列名(或行名)的并集,或者僅將公共部分保留。
join ='outer’是外部連接。列名(或行名)形成一個聯合,保留所有列(或行)。它是默認設置,因此可以省略不寫。在這種情況下,原始對象中列(或行)不存在的值將由的缺少值NaN代替。
join ='inner’是內部連接。僅保留具有相同列名(或行名)的列(或行)。
df_v_out = pd.concat([df1, df2], join='outer')
print(df_v_out)
# ? ? ? ? ?A ? ?B ? C ? ?D
# ONE ? ? A1 ? B1 ?C1 ?NaN
# TWO ? ? A2 ? B2 ?C2 ?NaN
# THREE ? A3 ? B3 ?C3 ?NaN
# TWO ? ?NaN ?NaN ?C2 ? D2
# THREE ?NaN ?NaN ?C3 ? D3
# FOUR ? NaN ?NaN ?C4 ? D4
df_v_in = pd.concat([df1, df2], join='inner')
print(df_v_in)
# ? ? ? ? C
# ONE ? ?C1
# TWO ? ?C2
# THREE ?C3
# TWO ? ?C2
# THREE ?C3
# FOUR ? C4
水平方向。
df_h_out = pd.concat([df1, df2], axis=1, join='outer')
print(df_h_out)
# ? ? ? ? ?A ? ?B ? ?C ? ?C ? ?D
# FOUR ? NaN ?NaN ?NaN ? C4 ? D4
# ONE ? ? A1 ? B1 ? C1 ?NaN ?NaN
# THREE ? A3 ? B3 ? C3 ? C3 ? D3
# TWO ? ? A2 ? B2 ? C2 ? C2 ? D2
df_h_in = pd.concat([df1, df2], axis=1, join='inner')
print(df_h_in)
# ? ? ? ? A ? B ? C ? C ? D
# TWO ? ?A2 ?B2 ?C2 ?C2 ?D2
# THREE ?A3 ?B3 ?C3 ?C3 ?D3
如何更改列名和行名,請參考下列連接。
01_Pandas.DataFrame的行名和列名的修改
pandas.DataFrame的連接
將pandas.DataFrames連接在一起時,返回的也是pandas.DataFrame類型的對象。
df_concat = pd.concat([df1, df2])
print(df_concat)
# ? ? ? ? ?A ? ?B ? C ? ?D
# ONE ? ? A1 ? B1 ?C1 ?NaN
# TWO ? ? A2 ? B2 ?C2 ?NaN
# THREE ? A3 ? B3 ?C3 ?NaN
# TWO ? ?NaN ?NaN ?C2 ? D2
# THREE ?NaN ?NaN ?C3 ? D3
# FOUR ? NaN ?NaN ?C4 ? D4
print(type(df_concat))
# <class 'pandas.core.frame.DataFrame'>
pandas.Series的連接
如果是pandas.Series之間的連接,則垂直連接(默認值axis= 0)返回的也是pandas.Series類型的對象。
s_v = pd.concat([s1, s2])
print(s_v)
# ONE ? ? ?X1
# TWO ? ? ?X2
# THREE ? ?X3
# TWO ? ? ?Y2
# THREE ? ?Y3
# FOUR ? ? Y4
# dtype: object
print(type(s_v))
# <class 'pandas.core.series.Series'>
axis = 1時,水平方向連接,返回pandas.DataFrame類型的對象。
s_h = pd.concat([s1, s2], axis=1)
print(s_h)
# ? ? ? ? ?X ? ?Y
# FOUR ? NaN ? Y4
# ONE ? ? X1 ?NaN
# THREE ? X3 ? Y3
# TWO ? ? X2 ? Y2
print(type(s_h))
# <class 'pandas.core.frame.DataFrame'>
也可以使用參數join。
s_h_in = pd.concat([s1, s2], axis=1, join='inner')
print(s_h_in)
# X Y
# TWO X2 Y2
# THREE X3 Y3
pandas.DataFrame和pandas.Series的連接
對于pandas.DataFrame和pandas.Series連接,水平連接(axis= 1)將pandas.Series添加為新列。列名稱是pandas.Series的名稱。
df_s_h = pd.concat([df1, s2], axis=1)
print(df_s_h)
# A B C Y
# FOUR NaN NaN NaN Y4
# ONE A1 B1 C1 NaN
# THREE A3 B3 C3 Y3
# TWO A2 B2 C2 Y2
也可以使用參數join。
df_s_h_in = pd.concat([df1, s2], axis=1, join='inner')
print(df_s_h_in)
# A B C Y
# TWO A2 B2 C2 Y2
# THREE A3 B3 C3 Y3
垂直連接(axis = 0)。
df_s_v = pd.concat([df1, s2])
print(df_s_v)
# A B C 0
# ONE A1 B1 C1 NaN
# TWO A2 B2 C2 NaN
# THREE A3 B3 C3 NaN
# TWO NaN NaN NaN Y2
# THREE NaN NaN NaN Y3
# FOUR NaN NaN NaN Y4
添加行,可以在.loc中指定新的行名稱并分配值,或使用append()方法。
df1.loc['FOUR'] = ['A4', 'B4', 'C4']
print(df1)
# ? ? ? ? A ? B ? C
# ONE ? ?A1 ?B1 ?C1
# TWO ? ?A2 ?B2 ?C2
# THREE ?A3 ?B3 ?C3
# FOUR ? A4 ?B4 ?C4
s = pd.Series(['A5', 'B5', 'C5'], index=df1.columns, name='FIVE')
print(s)
# A ? ?A5
# B ? ?B5
# C ? ?C5
# Name: FIVE, dtype: object
df_append = df1.append(s)
print(df_append)
# ? ? ? ? A ? B ? C
# ONE ? ?A1 ?B1 ?C1
# TWO ? ?A2 ?B2 ?C2
# THREE ?A3 ?B3 ?C3
# FOUR ? A4 ?B4 ?C4
# FIVE ? A5 ?B5 ?C5
原文鏈接:https://blog.csdn.net/qq_18351157/article/details/104557778
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-04-16 C++中allocator類使用示例_C 語言
- 2022-09-03 C#實現工廠方法模式_C#教程
- 2022-10-02 react中路由和按需加載的問題_React
- 2022-04-18 python?numpy中對ndarry按照index增刪改查_python
- 2022-03-24 C++內存管理介紹_C 語言
- 2022-09-23 WPF仿微信實現截圖功能的方法詳解_C#教程
- 2022-06-12 GitHub?AI編程工具copilot在Pycharm的應用_python
- 2023-01-09 基于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同步修改后的遠程分支