1. 程式人生 > 程式設計 >pandas資料拼接的實現示例

pandas資料拼接的實現示例

一 前言

pandas資料拼接有可能會用到,比如出現重複資料,需要合併兩份資料的交集,並集就是個不錯的選擇,知識追尋者本著技多不壓身的態度蠻學習了一下下;

二 資料拼接

在進行學習資料轉換之前,先學習一些數拼接相關的知識

2.1 join()聯結

有關merge操作知識追尋者這邊不提及,有空可能後面會專門出一篇相關文章,因為其學習方式根SQL的表聯結類似,不是幾行能說清楚的知識點;

join操作能將 2 個DataFrame 合併為一塊,前提是DataFrame 之間的列沒有重複;

# -*- 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','number' : [100,2000,3000],'activity' : ['swing','riding','climbing']
}
index2 = ['user1','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() 函式能將2個 Series 拼接為一個,預設按行拼接;

ser1 = pd.Series(['111','222',np.NaN])
ser2 = pd.Series(['333','444',np.NaN])
# 預設按行拼接
print(pd.concat([ser1,ser2]))

如果按列拼接則 axis = 1

ser1 = pd.Series(['111',np.NaN])
# 按列拼接
print(pd.concat([ser1,ser2],axis=1))

輸出

0 1
0 111 333
1 222 444
2 NaN NaN

更近一步,指定key 引數 輸出的資料格式就和 DataFrame 一樣

ser1 = pd.Series(['111',np.NaN])
# 按列拼接
data = pd.concat([ser1,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()組合

索引重複時就可以使用combine_first進行拼接

ser1 = pd.Series(['111',np.NaN],index=[1,2,3])
ser2 = pd.Series(['333',np.NaN,'555'],3,4])
data = ser1.combine_first(ser2)
print(data)

輸出

1 111
2 222
3 NaN
4 555
dtype: object

將Series 位置互換一下,可以看見基準將以 ser2為準;

ser1 = pd.Series(['111',4])
data = ser2.combine_first(ser1)
print(data)

輸出

1 333
2 444
3 NaN
4 555
dtype: object

2.4 軸轉換

準備的資料

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np

data = {
  'user' : ['zszxz','hiking']
}
index = ['user1','user3']
frame = pd.DataFrame(data,index)
print(frame)

輸出

user price hobby
user1 zszxz 100 reading
user2 craler 200 running
user3 rose 300 hiking

stack() 將 列轉為行;

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np

data = {
  'user' : ['zszxz',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()將 資料結構重新返回

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np

data = {
  'user' : ['zszxz',index)
sta = frame.stack()
print(sta.unstack())

輸出

user price hobby
user1 zszxz 100 reading
user2 craler 200 running
user3 rose 300 hiking

到此這篇關於pandas資料拼接的實現示例的文章就介紹到這了,更多相關pandas資料拼接內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!