1. 程式人生 > >Pandas中DataFrame數據合並、連接(concat、merge、join)之concat

Pandas中DataFrame數據合並、連接(concat、merge、join)之concat

多個 name mage 參數 技術 key 數據合並 bubuko axis

一、concat:沿著一條軸,將多個對象堆疊到一起

concat(objs, axis=0, join=outer, join_axes=None, ignore_index=False, 
       keys=None, levels=None, names=None, verify_integrity=False, copy=True): 

objs:需要連接的對象集合,一般是列表或字典;

axis:連接軸向;

join:參數為‘outer’或‘inner’;

join_axes=[]:指定自定義的索引;

keys=[]:創建層次化索引;

ignore_index=True:重建索引

pd.concat()只是單純的把兩個表拼接在一起,參數axis是關鍵,它用於指定是行還是列,axis默認是0。

當axis=0時,pd.concat([obj1, obj2])的效果與obj1.append(obj2)是相同的;

當axis=1時,pd.concat([obj1, obj2], axis=1)的效果與pd.merge(obj1, obj2, left_index=True, right_index=True, how=‘outer‘)是相同的。merge方法的介紹請參看下文。

import  pandas as pd
import numpy  as np
random 
= np.random.RandomState(0) #隨機數種子,相同種子下每次運行生成的隨機數相同 df1=pd.DataFrame(random.randn(3,4),columns=[a,b,c,d]) df1

技術分享圖片

random = np.random.RandomState(0)
df2=pd.DataFrame(random.randn(2,3),columns=[b,d,a],index=["a1","a2"])
df2

技術分享圖片

random = np.random.RandomState(1)
df22=pd.DataFrame(random.randn(3,3),columns=[
b,d,a],index=[1,"a1","a2"]) df22

技術分享圖片

當axis=0時

pd.concat([df1,df2],axis=0)

技術分享圖片

pd.concat([df1,df2],axis=0,join="outer")

技術分享圖片

df12=df1.append(df2)
df12

技術分享圖片

pd.concat([df1,df2],axis=0,join="inner")

技術分享圖片

當axis=1時

pd.concat([df1,df2],axis=1,join=inner)

技術分享圖片

pd.concat([df1,df1],axis=1,join=inner) #和outer一樣

技術分享圖片

pd.concat([df1,df2],axis=1,join="outer")

技術分享圖片

pd.concat([df1,df22],axis=1,join="inner")

技術分享圖片

pd.concat([df1,df22],axis=1,join="outer")

技術分享圖片

pd.concat([df1,df1],axis=1,join="outer")

技術分享圖片

Pandas中DataFrame數據合並、連接(concat、merge、join)之concat