日韩性视频-久久久蜜桃-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简明教程:九、表的合并、连接、拼接(数据聚合基础)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲自拍偷拍一区二区 | 在线无码va中文字幕无码 | 亚洲精品一卡 | 51av在线 | 日韩精品久 | 国产原创在线视频 | 69精品一区二区 | 色亚洲成人 | 国产乱码av | 一区二区在线视频播放 | 欧美精品久久久 | 偷拍久久久 | 天堂色在线 | 日韩婷婷| 日韩黄色视屏 | 一个色综合网 | 亚洲啪啪av | 少妇淫片 | 亚洲欧洲中文字幕 | 色天天干 | 91亚洲成人 | 四虎网站在线观看 | 夜夜高潮夜夜爽国产伦精品 | 国产二区在线播放 | 自拍偷自拍亚洲精品播放 | 日韩第四页 | 黄色不卡 | 男女激情视频网站 | 四虎永久在线观看 | 国产三级一区二区 | 亚洲一区二区三区综合 | 天天综合天天做天天综合 | 成人午夜看片 | 国产精品一二三四五 | 九色蝌蚪9l视频蝌蚪9l视频 | 91亚洲网 | 热久久最新网址 | 岛国av片 | 九九热视频在线观看 | 天堂国产在线 | 韩国三级bd高清中字2021 | 69综合| 夜夜爱爱| 国产中文字幕在线 | 美日韩在线观看 | 黄色福利网 | 色悠久 | 国产一级片一区 | 少妇按摩一区二区三区 | 在线观看黄网 | 国产欧美在线播放 | 日本加勒比一区二区 | 求欧美精品网址 | 日韩av色| 亚洲精品av在线 | 久久久久久久久久久久久女国产乱 | 日韩精品电影一区二区三区 | av色网站 | 夫妻啪啪呻吟x一88av | 亚日韩欧美 | 午夜激情综合 | 无码人妻精品一区二区蜜桃视频 | 成人午夜性视频 | 国产精品久久久91 | 91在线国产观看 | 日本欧美韩国国产精品 | 欧美老女人视频 | 国产精品欧美在线 | 开心激情网站 | 伊人激情视频 | 国产精品男同 | 一级片自拍 | 国产二级一片内射视频播放 | 亚洲AV无码成人精品国产一区 | 日韩av高清无码 | 麻豆精品免费 | 国产综合视频在线 | wwwxxx色| 亚洲不卡在线视频 | 国产精品午夜无码专区 | 三上悠亚ssⅰn939无码播放 | 久久久精品人妻av一区二区三区 | 96日本xxxxxⅹxxx17 | 成人久久久精品国产乱码一区二区 | 亚洲人视频在线观看 | 日本特黄特黄刺激大片 | 免费视频www在线观看网站 | 天天操天天操天天操天天操天天操 | 国产精品第3页 | 日本一区二区在线免费观看 | jvid视频| 国产91丝袜在线播放九色 | 99精品在线 | 日本a级一区 | 日本美女视频一区 | 欧美成人手机视频 | 亚洲av无码国产精品色午夜 | 青青草原成人 | 亚洲另类天堂 |