pandas數(shù)據(jù)拼接的實現(xiàn)示例
一 前言
pandas數(shù)據(jù)拼接有可能會用到,比如出現(xiàn)重復(fù)數(shù)據(jù),需要合并兩份數(shù)據(jù)的交集,并集就是個不錯的選擇,知識追尋者本著技多不壓身的態(tài)度蠻學(xué)習(xí)了一下下;
二 數(shù)據(jù)拼接
在進行學(xué)習(xí)數(shù)據(jù)轉(zhuǎn)換之前,先學(xué)習(xí)一些數(shù)拼接相關(guān)的知識
2.1 join()聯(lián)結(jié)
有關(guān)merge操作知識追尋者這邊不提及,有空可能后面會專門出一篇相關(guān)文章,因為其學(xué)習(xí)方式根SQL的表聯(lián)結(jié)類似,不是幾行能說清楚的知識點;
join操作能將 2 個DataFrame 合并為一塊,前提是DataFrame 之間的列沒有重復(fù);
# -*- coding: utf-8 -*- import pandas as pd import numpy as np data1 = { 'user' : ['zszxz','craler','rose'], 'price' : [100, 200, 300], 'hobby' : ['reading','running','hiking'] } index1 = ['user1','user2','user3'] frame1 = pd.DataFrame(data1,index1) data2 = { 'person' : ['zszxz','craler','rose'], 'number' : [100, 2000, 3000], 'activity' : ['swing','riding','climbing'] } index2 = ['user1','user2','user3'] frame2 = pd.DataFrame(data2,index2) join = frame1.join(frame2) print(join)
輸出
user price hobby person number activity
user1 zszxz 100 reading zszxz 100 swing
user2 craler 200 running craler 2000 riding
user3 rose 300 hiking rose 3000 climbing
2.2 concat()拼接
使用 concat() 函數(shù)能將2個 Series 拼接為一個,默認(rèn)按行拼接;
ser1 = pd.Series(['111','222',np.NaN]) ser2 = pd.Series(['333','444',np.NaN]) # 默認(rèn)按行拼接 print(pd.concat([ser1, ser2]))
如果按列拼接則 axis = 1
ser1 = pd.Series(['111','222',np.NaN]) ser2 = pd.Series(['333','444',np.NaN]) # 按列拼接 print(pd.concat([ser1, ser2],axis=1))
輸出
0 1
0 111 333
1 222 444
2 NaN NaN
更近一步,指定key 參數(shù) 輸出的數(shù)據(jù)格式就和 DataFrame 一樣
ser1 = pd.Series(['111','222',np.NaN]) ser2 = pd.Series(['333','444',np.NaN]) # 按列拼接 data = pd.concat([ser1, ser2],axis=1, keys=['zszxz', 'rzxx']) print(data)
輸出
zszxz rzxx
0 111 333
1 222 444
2 NaN NaN
注 : DataFrame 的 concat 操作 和 Series 類似;
2.3 combine_first()組合
索引重復(fù)時就可以使用combine_first進行拼接
ser1 = pd.Series(['111','222',np.NaN],index=[1,2,3]) ser2 = pd.Series(['333','444',np.NaN,'555'],index=[1,2,3,4]) data = ser1.combine_first(ser2) print(data)
輸出
1 111
2 222
3 NaN
4 555
dtype: object
將Series 位置互換一下,可以看見基準(zhǔn)將以 ser2為準(zhǔn);
ser1 = pd.Series(['111','222',np.NaN],index=[1,2,3]) ser2 = pd.Series(['333','444',np.NaN,'555'],index=[1,2,3,4]) data = ser2.combine_first(ser1) print(data)
輸出
1 333
2 444
3 NaN
4 555
dtype: object
2.4 軸轉(zhuǎn)換
準(zhǔn)備的數(shù)據(jù)
# -*- coding: utf-8 -*- import pandas as pd import numpy as np data = { 'user' : ['zszxz','craler','rose'], 'price' : [100, 200, 300], 'hobby' : ['reading','running','hiking'] } index = ['user1','user2','user3'] frame = pd.DataFrame(data,index) print(frame)
輸出
user price hobby
user1 zszxz 100 reading
user2 craler 200 running
user3 rose 300 hiking
stack() 將 列轉(zhuǎn)為行;
# -*- coding: utf-8 -*- import pandas as pd import numpy as np data = { 'user' : ['zszxz','craler','rose'], 'price' : [100, 200, 300], 'hobby' : ['reading','running','hiking'] } index = ['user1','user2','user3'] frame = pd.DataFrame(data,index) print(frame.stack())
輸出
user1 user zszxz
price 100
hobby reading
user2 user craler
price 200
hobby running
user3 user rose
price 300
hobby hiking
dtype: object
使用 unstack()將 數(shù)據(jù)結(jié)構(gòu)重新返回
# -*- coding: utf-8 -*- import pandas as pd import numpy as np data = { 'user' : ['zszxz','craler','rose'], 'price' : [100, 200, 300], 'hobby' : ['reading','running','hiking'] } index = ['user1','user2','user3'] frame = pd.DataFrame(data,index) sta = frame.stack() print(sta.unstack())
輸出
user price hobby
user1 zszxz 100 reading
user2 craler 200 running
user3 rose 300 hiking
到此這篇關(guān)于pandas數(shù)據(jù)拼接的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)pandas數(shù)據(jù)拼接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談python 調(diào)用open()打開文件時路徑出錯的原因
這篇文章主要介紹了淺談python 調(diào)用open()打開文件時路徑出錯的原因,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python用摘要算法生成token及檢驗token的示例代碼
這篇文章主要介紹了Python用摘要算法生成token及檢驗token的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-12-12利用python求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)詳解
這篇文章主要給大家介紹了關(guān)于利用python如何求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09python實現(xiàn)zip分卷壓縮的詳細(xì)方法
WinHex 開始16進制一個一個文件對比 WinRar 創(chuàng)建的分卷壓縮和單個 zip 文件的差異,這篇文章主要介紹了python實現(xiàn)zip分卷壓縮的詳細(xì)方法,需要的朋友可以參考下2024-02-0210個Python常用的損失函數(shù)及代碼實現(xiàn)分享
損失函數(shù)是一種衡量模型與數(shù)據(jù)吻合程度的算法。損失函數(shù)測量實際測量值和預(yù)測值之間差距的一種方式。本文為大家總結(jié)了10個常用的損失函數(shù)及Python代碼實現(xiàn),需要的可以參考一下2022-09-09python實現(xiàn)計算資源圖標(biāo)crc值的方法
這篇文章主要介紹了python實現(xiàn)計算資源圖標(biāo)crc值的方法,通過解析資源文件找到icon的數(shù)據(jù),從而實現(xiàn)該功能,需要的朋友可以參考下2014-10-10