為解決數(shù)據(jù)冗余等問(wèn)題,大量的數(shù)據(jù)會(huì)分開(kāi)存放在不同的文件(表格)里。在數(shù)據(jù)處理時(shí),經(jīng)常會(huì)有不同表格的數(shù)據(jù)需要進(jìn)行合并操作??梢酝ㄟ^(guò)pandas庫(kù)的merge函數(shù)和concat函數(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)集的合并。
1、DataFrame數(shù)據(jù)合并—merge()
1.1 簡(jiǎn)介:連接行,列數(shù)增加
根據(jù)一個(gè)或多個(gè)鍵將不同DataFrame中的行連接起來(lái)。
說(shuō)明:類似于關(guān)系數(shù)據(jù)庫(kù)的連接(join)操作、excel的vlookup
應(yīng)用場(chǎng)景:
針對(duì)同一個(gè)主鍵存在兩張包含不同字段的表,現(xiàn)在想把他們整合到一張表里。
在此典型情況下,結(jié)果集的行數(shù)并沒(méi)有增加,列數(shù)則為兩個(gè)元數(shù)據(jù)的列數(shù)和減去連接鍵的數(shù)量
例:
原有的兩個(gè)DataFrame,分別為:df1;df2

合并后:按指定的鍵連接,列數(shù)增加,去掉了多余的鍵

1.2 格式
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,left_index=False, right_index=False, sort=True,suffixes=('_x', '_y'), copy=True, indicator=False)
1.3 按指定的鍵連接

1.4 按索引連接

1.5 按多個(gè)鍵連接

結(jié)果:

1.6 參數(shù)說(shuō)明
on=None 用于指定用于連接的列名(鍵名),如果該列在兩個(gè)對(duì)象上的列名不同,則可以通過(guò) left_on=None, right_on=None 來(lái)分別指定。
例:


或者想直接使用行索引作為連接鍵的話,就將 left_index=False, right_index=False 設(shè)為 True
例:


how='inner' 參數(shù)指的是當(dāng)左右兩個(gè)對(duì)象中存在不重合的鍵時(shí),取結(jié)果的方式:inner 代表交集;outer 代表并集;left 和 right 分別為取一邊。
例:

inner和outer分別取交集和并集

left和right分別以一邊為參考合并

suffixes=(‘_x’,‘_y’) 指的是當(dāng)左右對(duì)象中存在除連接鍵外相同列名時(shí),結(jié)果集中的區(qū)分方式,可各加一個(gè)小尾巴。

注:對(duì)于多對(duì)多連接,結(jié)果采用的是行的笛卡爾積。
2、DataFrame數(shù)據(jù)連接—concat()
2.1 簡(jiǎn)介:連接列,行數(shù)增加
可以沿著一條軸將多個(gè)對(duì)象堆疊到一起,concat函數(shù)相當(dāng)于數(shù)據(jù)庫(kù)中的全連接(UNION ALL)
可以指定按某個(gè)軸進(jìn)行連接,也可以指定連接的方式join(outer,inner 只有這兩種)。
與數(shù)據(jù)庫(kù)不同的是concat不會(huì)去重,要達(dá)到去重的效果可以使用drop_duplicates方法
2.2 格式
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,keys=None, levels=None, names=None, verify_integrity=False,copy=True)
2.3 參數(shù)說(shuō)明
軸向連接 pd.concat() 就是單純地把兩個(gè)表拼在一起,這個(gè)過(guò)程也被稱作連接(concatenation)、綁定(binding)或堆疊(stacking)。
因此可以想見(jiàn),這個(gè)函數(shù)的關(guān)鍵參數(shù)應(yīng)該是 axis,用于指定連接的軸向。

在默認(rèn)的 axis=0 情況下:
pd.concat([obj1,obj2]) 函數(shù)的效果與obj1.append(obj2) 是相同的,即obj1行與obj2行的疊加;
在 axis=1 的情況下:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-612946.html
pd.concat([df1,df2],axis=1)和pd.merge(df1,df2,left_index=True,right_index=True,how='outer')的效果是相同的,即兩個(gè)DataFrame數(shù)據(jù)的按照索引進(jìn)行列的鏈接。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-612946.html

到了這里,關(guān)于pandas中DataFrame數(shù)據(jù)合并、連接的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!