pandas DataFrame 的橫向縱向拼接組合


concat 與其說是連接,更准確的說是拼接。就是把兩個表直接合在一起。於是有一個突出的問題,是橫向拼接還是縱向拼接,所以concat 函數的關鍵參數是axis 。 
函數的具體參數是:

concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False)

objs 是需要拼接的對象集合,一般為列表或者字典

axis=0 是按照行拼接,拼接之后行數增加,列數也根據join來定,join=’outer’時,列數是兩表並集。同理join=’inner’,列數是兩表交集。

在默認情況下為縱向拼接,即axis=0,此時有

concat([df1,df2]) 等價於 df1.append(df2)

在axis=1 時為橫向拼接 ,此時有

concat([df1,df2],axis=1) 等價於 merge(df1,df2,left_index=True,right_index=True,how='outer')

以上轉自: https://blog.csdn.net/qq_30718387/article/details/72152461

 

應用舉例:

df=pandas.DataFrame()

df2=pandas.DataFrame()

df['id']=[1,2,3,4]
df['name']=['zhang','chen','lee','wang'] df2['id']=[2,3,4,5]
df2['place']=['Shenzhen','Hongkong','NewYork','London']
df3=pandas.DataFrame({'id':[]})

用法1:把來自兩個不同DataFrame的列,縱向拼接到一起,賦值給另一個DataFrame的列。

df3['id']=pandas.concat([df['id'],df2['id']],axis=0,ignore_index=True)

 執行后,

df3['id']=[1,2,3,4,5,2,3,4,5]

用法2:兩個DataFrame進行縱向拼接:

df4=pandas.concat([df,df2],axis=0,ignore_index=True)

執行后,df4=

index id name place
0 1       zhang NaN
1 2 chen NaN
2 3 lee NaN
3 4 wang NaN
4 2 NaN Shenzhen
5 3 NaN HongKong
6 4 NaN NewYork
7 5 NaN London

 用法3:兩個DataFrame進行橫向拼接:

df4=pandas.concat([df,df2],axis=1,ignore_index=True)

執行后,df4=

index 0 1 2 3
1        zhang   2         Shenzhen    
1 2 chen 3 HongKong
2 3 lee 4 NewYork
3 4 wang 5 London

 

多個拼接還可以使用生成器:

dfs=[df1,df2,df3,df4,df5]

df6=pandas.DataFrame()

df6['id']=pd.concat([df['id'] for df in dfs])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM