本篇文章為大家展示了Python中怎么實現(xiàn)數(shù)據(jù)合并與追加,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于做網(wǎng)站、成都做網(wǎng)站、江陵網(wǎng)絡推廣、成都微信小程序、江陵網(wǎng)絡營銷、江陵企業(yè)策劃、江陵品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供江陵建站搭建服務,24小時服務熱線:13518219792,官方網(wǎng)址:muchs.cn
數(shù)據(jù)合并(簡單合并,無需匹配)
針對簡單合并而言,在R語言中主要通過以下兩個函數(shù)來實現(xiàn):
cbind()
dplyr::bind_cols()
df1 <- data.frame(A=c('A0', 'A1', 'A2', 'A3'),
B= c('B0', 'B1', 'B2', 'B3'),
C= c('C0', 'C1', 'C2', 'C3'),
D=c('D0', 'D1', 'D2', 'D3')
)
df2 <- data.frame(E=c('A4', 'A5', 'A6', 'A7'),
F= c('B4', 'B5', 'B6', 'B7'),
G=c('C4', 'C5', 'C6', 'C7'),
H= c('D4', 'D5', 'D6', 'D7'))
df3 <-data.frame(I=c('A8', 'A9', 'A10', 'A11'),
J= c('B8', 'B9', 'B10', 'B11'),
K=c('C8', 'C9', 'C10', 'C11'),
L=c('D8', 'D9', 'D10', 'D11')
)
df1;df2;df3
mydata1<-cbind(df1,df2,df3);mydata1
mydata2<-dplyr::bind_cols(df1,df2,df3);mydata1
在Python中,簡單的合并可以通過Pandas中的concat函數(shù)來實現(xiàn)的。
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({'E': ['A4', 'A5', 'A6', 'A7'],
'F': ['B4', 'B5', 'B6', 'B7'],
'G': ['C4', 'C5', 'C6', 'C7'],
'H': ['D4', 'D5', 'D6', 'D7']},
index=[0, 1, 2, 3])
df3 = pd.DataFrame({'I': ['A8', 'A9', 'A10', 'A11'],
'J': ['B8', 'B9', 'B10', 'B11'],
'K': ['C8', 'C9', 'C10', 'C11'],
'L': ['D8', 'D9', 'D10', 'D11']},
index=[0, 1, 2, 3])
result1 = pd.concat([df1,df2,df3],axis=1,join_axes=[df1.index])
橫向合并:(需匹配)
在R語言中,這種操作有很多可選方案,如基礎函數(shù)merge、plyr包中的join函數(shù)以及dplyr包中的left/right/inter/full_join等函數(shù)。
merge
plyr::join
dplyr::left/right/inter/full_join
這里為了節(jié)省時間,只介紹第一種基礎函數(shù),欲了解詳情,可以查看這篇歷史文章:
(R語言數(shù)據(jù)處理——數(shù)據(jù)合并與追加)
merge(x, y, #帶合并的數(shù)據(jù)集名稱(左右順序)
by = intersect(names(x), names(y)), #合并依據(jù)字段(名稱相同)
by.x = by, #名稱不同時需同時時聲明
by.y = by, #名稱不同時需同時時聲明
all = FALSE,#合并類型,TRUE為全連接 (full),F(xiàn)ALSE為內(nèi)連接 (inter)
all.x = all,#左連接
all.y = all,#右連接
)
df3<-data.frame(id=c(1001,1002,1003,1004,1005,1006,1007,1008),
gender=c('male','female','male','female','male','female','male','female'),
pay=c('Y','N','Y','Y','N','Y','N','Y'),
m_point=c(10,12,20,40,40,40,30,20))
df4<-data.frame(id=c(1001,1002,1003,1004,1005,1006),
city=c('Beijing ', 'Shenzhen','Guangzhou', 'Shenzhen', 'Shanghai','Beijing'),
age=c(23,44,54,32,34,32),
category=c('100-A','100-B','110-A','110-C','210-A','130-F'),
price=c(1200,2900,2133,5433,1346,4432))
print(df3);print(df4)
mydata3<-merge(df3,df4,by="id",all=TRUE);print(mydata3)
mydata3<-merge(df3,df4,by="id",all=FALSE);print(mydata3)
mydata3<-merge(df3,df4,by="id",all.x=TRUE);print(mydata3)
mydata3<-merge(df3,df4,by="id",all.y=TRUE);print(mydata3)
在Python中,這一操作也可以通過函數(shù)Pandas庫中的cancat函數(shù)或者merge函數(shù)來完成。
Pandas-merge
df3=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008],
"gender":['male','female','male','female','male',
'female','male','female'],
"pay":['Y','N','Y','Y','N','Y','N','Y'],
"m-point":[10,12,20,40,40,40,30,20]})
df4= pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
"date":pd.date_range('20130102',periods=6),
"city":['Beijing', 'Shenzhen','Guangzhou','Shenzhen','Shanghai','Beijing'],
"age":[23,44,54,32,34,32],
"category":['100-A','100-B','110-A','110-C','210-A','130-F'],
"price":[1200,np.nan,2133,5433,np.nan,4432]},
columns =['id','date','city','category','age','price'])
print(df3);print(df4)
df_inner=pd.merge(df3,df4,how='inner');print(df_inner) #數(shù)據(jù)表合并(內(nèi)連接:inter join)
df_left=pd.merge(df3,df4, how='left') ;print(df_left) #數(shù)據(jù)表合并(左連接:left join)
df_right=pd.merge(df3,df4,how='right');print(df_right) #數(shù)據(jù)表合并(右連接:right join)
df_outer=pd.merge(df3,df4,how='outer');print(df_outer) #數(shù)據(jù)表合并(全連接:full join)
數(shù)據(jù)追加:
數(shù)據(jù)追加通常只需保證數(shù)據(jù)及的寬度一致且列字段名稱一致,相對來說比較簡單。在R語言和Python中,也很好實現(xiàn)。
在R語言中,可視化朱數(shù)據(jù)追加的函數(shù)有:
rbind()
dplyr::bind_rows()
mydata3<-rbind(df1,df2,df3);mydata3
mydata4<-dplyr::bind_rows(df1,df2,df3);mydata4
python中則可以很容易的通過數(shù)據(jù)框本身的append函數(shù)來實現(xiàn)簡單的數(shù)據(jù)追加:
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']},
index=[4,5,6,7])
df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
'B': ['B8', 'B9', 'B10', 'B11'],
'C': ['C8', 'C9', 'C10', 'C11'],
'D': ['D8', 'D9', 'D10', 'D11']},
index=[8, 9,10,11])
result = df1.append(df2);print(result)
result = result.append(df3);print(result)
如果是使用canat函數(shù)也可以非常輕松的完成數(shù)據(jù)追加:
result = pd.concat([df1, df2, df3]);print(result)
本文匯總:
數(shù)據(jù)合并(簡單合并)
R:
cbind()
dplyr::bind_cols()
Python:
Pandas-cancat()
數(shù)據(jù)合并(匹配和并)
R:
merge
plyr::join()
dplyr::left/right/inter/full_join()
Python:
Pandas-merge
數(shù)據(jù)追加:
R:
rbind()
dplyr::bind_rows()
Python:
Pandas-append()
Pandas-cancat()
上述內(nèi)容就是Python中怎么實現(xiàn)數(shù)據(jù)合并與追加,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當前題目:Python中怎么實現(xiàn)數(shù)據(jù)合并與追加
文章來源:http://muchs.cn/article12/gjsegc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、動態(tài)網(wǎng)站、建站公司、電子商務、云服務器、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)