日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pandas简明教程:九、表的合并、连接、拼接(数据聚合基础)

發布時間:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pandas简明教程:九、表的合并、连接、拼接(数据聚合基础) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

真實場景中常會遇到多種信息放在不同的表里的情況,此時我們就需要將這些表格的信息整合到一起。這種操作可以極大地減輕我們手動粘數據的工作,從而達到事半功倍的效果。

由于本篇要舉的例子較多,因此直接采用官網數據進行說明。

1、簡單合并方法

首先給定三個表:

df1A B C D 0 A0 B0 C0 D0 1 A1 B1 C1 D1 2 A2 B2 C2 D2 3 A3 B3 C3 D3df2A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D7df3A B C D 8 A8 B8 C8 D8 9 A9 B9 C9 D9 10 A10 B10 C10 D10 11 A11 B11 C11 D11

表中的表頭為A,B,C,D四列,每列中包含的數據不相同,此時對其直接進行合并。

frames = [df1, df2, df3]result = pd.concat(frames)resultA B C D 0 A0 B0 C0 D0 1 A1 B1 C1 D1 2 A2 B2 C2 D2 3 A3 B3 C3 D3 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D7 8 A8 B8 C8 D8 9 A9 B9 C9 D9 10 A10 B10 C10 D10 11 A11 B11 C11 D11

可以看到,這種操作十分方便。

這個看似簡單的操作在許多時候能夠起到大作用。比如我們統計一些學生的高考成績(剛好4列),這些學生的高考成績按照學校、班級存在許多個不同的文件中。那么此時我們可以結合os的方法將所有表格依次讀出再合并為一個表。想象一下比如有100張表格,那么我們只需要簡單幾句代碼就能全部合并起來。而手動操作的話光是打開、復制、粘貼就至少得1-2個小時才能完成,如果每張表頭的擺放順序不一樣還會花費更多的時間。

合并函數的定義是這樣的:

pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None,levels=None, names=None, verify_integrity=False, copy=True)

其中objs即是要被合并的對象(可以是許多類型),詳細的說明可以直接查看官網,這里我們只挑最重要的問題進行講解。

2、選擇拼接方向

axis默認是0,可以理解為按行拼接。下面我們試試設為1:

result = pd.concat([df1, df2], axis=1, sort=False)resultA B C D A B C D 0 A0 B0 C0 D0 NaN NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN NaN 2 A2 B2 C2 D2 NaN NaN NaN NaN 3 A3 B3 C3 D3 NaN NaN NaN NaN 4 NaN NaN NaN NaN A4 B4 C4 D4 5 NaN NaN NaN NaN A5 B5 C5 D5 6 NaN NaN NaN NaN A6 B6 C6 D6 7 NaN NaN NaN NaN A7 B7 C7 D7

可以看到,此時是將兩張表合并到了一起,并具有名稱相同的列,但它們各自對應的index還是原來的。

3、選擇拼接方式

直接對上面的兩張表做這樣一個操作:

result = pd.concat([df1, df2], axis=1, join='inner',sort=False)Empty DataFrame Columns: [A, B, C, D, A, B, C, D] Index: []

這里要注意一個問題:當我們按照inner方式進行合并的時候,它是選擇兩個表共有的index或者column進行合并。而這里我們看到df1和df2并沒有共同的index,而此時又是按照橫向拼接的,因此結果為空。

為了方便敘述我們再造一張表,演示一下從不同方向的inner合并結果:

df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],'D': ['D2', 'D3', 'D6', 'D7'],'F': ['F2', 'F3', 'F6', 'F7']},index=[2, 3, 6, 7])result = pd.concat([df1, df4], axis=1, join='inner',sort=False)resultA B C D B D F 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F3result = pd.concat([df1, df4], axis=0, join='inner',sort=False)resultB D 0 B0 D0 1 B1 D1 2 B2 D2 3 B3 D3 2 B2 D2 3 B3 D3 6 B6 D6 7 B7 D7

而其它的如重新分配key值、用append方法給表格添加數據等方法就相對容易理解了。有需要的同學直接查看文檔即可。

4、按照統一的key值合并

在實際應用場景中我們常會遇到這樣的情況:假設我手上有客戶的一些信息的表,但客戶的各類信息分散在不同的幾個表中,比如下面這種情況。

leftkey A B 0 K0 A0 B0 1 K1 A1 B1 2 K2 A2 B2 3 K3 A3 B3rightkey C D 0 K0 C0 D0 1 K1 C1 D1 2 K2 C2 D2 3 K3 C3 D3

這里key列可以看作是客戶的編號,而A,B,C,D分別是客戶的各類信息。那么此時我們想要將這兩張表合并起來,就可以用下面的方法:

result = pd.merge(left, right, on='key')resultkey A B C D 0 K0 A0 B0 C0 D0 1 K1 A1 B1 C1 D1 2 K2 A2 B2 C2 D2 3 K3 A3 B3 C3 D3

注意這個例子比較特殊,因為兩張表都有完全相同的key值,而真實場景中常常不能滿足這一條件,那么此時我們就要指定某張表作為主表。

這里我們先把右表的最后一行刪掉:

right = right.drop([3])key C D 0 K0 C0 D0 1 K1 C1 D1 2 K2 C2 D2

再指定左表為主表:

result = pd.merge(left, right, how='left', on='key')resultkey A B C D 0 K0 A0 B0 C0 D0 1 K1 A1 B1 C1 D1 2 K2 A2 B2 C2 D2 3 K3 A3 B3 NaN NaN

此時左表的所有key值就被保留了下來。

同理,如果以右表為主表,則只有右表的key值:

result = pd.merge(left, right, how='right', on='key')resultkey A B C D 0 K0 A0 B0 C0 D0 1 K1 A1 B1 C1 D1 2 K2 A2 B2 C2 D2

注意:此時還有一種場景也是經常遇到的,就是每張表的key值都不完整,那么此時就用outer方法進行合并:

left = left.drop([0]) # 刪掉左表第一行,那么此時兩張表的key值就都不完整了result = pd.merge(left, right, how='outer', on='key')resultkey A B C D 0 K1 A1 B1 C1 D1 1 K2 A2 B2 C2 D2 2 K3 A3 B3 NaN NaN 3 K0 NaN NaN C0 D0

相反,如果是用inner則取交集:

result = pd.merge(left, right, how='inner', on='key')resultkey A B C D 0 K1 A1 B1 C1 D1 1 K2 A2 B2 C2 D2
5、對比SQL

如果對SQL比較熟悉,那么學會Pandas的查詢方法則更加容易,由于官方已經給出了十分清楚的說明,這里就不再贅述,有興趣的同學可以自行查看:

Comparison with SQL

本系列教程教程完整目錄:

一、Pandas簡介與安裝

二、Pandas基本數據結構-DataFrame與Series

三、Pandas文件讀寫

四、Pandas數據索引方式

五、Pandas簡單統計操作及通用方式

六、Pandas條件查詢

七、Pandas缺失數據的處理(數據清洗基礎)

八、Pandas數據透視表

九、表的合并、連接、拼接(數據聚合基礎)

總結

以上是生活随笔為你收集整理的Pandas简明教程:九、表的合并、连接、拼接(数据聚合基础)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 西西午夜影院 | 欧美美女性生活视频 | 97干干| 4438x全国最大成人 | 国产一区二区视频免费在线观看 | 日日操操 | 欧美精品免费在线观看 | 精品国产一区在线观看 | 精品久久久视频 | 欧美激情自拍偷拍 | 国产又好看的毛片 | 日韩 欧美 中文 | 精品久久久久久亚洲精品 | 日本一区二区三区在线观看 | 欧美日韩国产精品一区二区三区 | 国产人妻精品久久久久野外 | 黄色大尺度视频 | 久插网| 两性午夜视频 | 亚洲黄色激情 | 东京av男人的天堂 | 国产一级色 | 最新天堂中文在线 | 久久er99热精品一区二区 | 国产精品丝袜黑色高跟 | 初高中福利视频网站 | 视频日韩 | 少妇被中出 | 欧美一区二区三区视频在线观看 | 国产又粗又硬视频 | 日韩视频免费观看高清完整版 | 一级少妇精品久久久久久久 | 东京热一区二区三区四区 | 综合视频一区二区 | 精品一区二区久久久久久按摩 | jizz日本在线观看 | 天天干夜夜添 | 涩涩一区 | 久久99色 | 99精品久久久久 | 日韩精品视频三区 | 亚洲国产精品美女 | 青草青在线 | 教练含着她的乳奶揉搓揉捏动态图 | 午夜在线看 | 女人叉开腿让男人桶 | av日韩高清| 黄色永久免费网站 | av综合久久 | 国产探花在线精品一区二区 | 国产精品免费视频观看 | 色小姐综合网 | 欧美一级鲁丝片 | 男女视频在线免费观看 | 日韩大片免费在线观看 | 青青草在线免费 | 欧美性猛交xxxx偷拍洗澡 | 999热精品视频 | 国产福利片在线 | 大奶子网站 | xx视频在线 | 激情五月深爱五月 | www.中文字幕.com | 亚洲精品大全 | 欧美精品免费一区二区 | 四色成人av永久网址 | 亚洲成人精品久久久 | 边啃奶头边躁狠狠躁 | 四虎久久| 日本特黄成人 | 日韩一区二区三区在线观看视频 | 国产精品白嫩极品美女 | 欧美亚洲色综久久精品国产 | 91久久在线 | 成人免费毛片入口 | 亚洲视频图片 | 国产黄色片在线播放 | 久久精品视频18 | 免费看黄色一级大片 | 欧日韩一区二区三区 | 18成人免费观看视频 | videosex抽搐痉挛高潮 | 国产精品精品国产色婷婷 | 亚洲午夜精品一区二区三区 | 日本高清在线一区 | 国产精品久久影院 | 毛片中文字幕 | 国产在线观看免费av | 午夜综合网 | 久久五月网 | 国产乱强伦一区二区三区 | 日韩中文字幕影院 | 91射射| 日本高清三区 | 国产精品视屏 | 青青草视频在线观看 | 在线中文字幕日韩 | 国产女人高潮毛片 | 黄色wwww|