Pandas 合併資料集

2022-08-23 06:09:09 字數 2205 閱讀 1902

在資料探勘過程中,經常會有不同**的資料需要進行合併操作。今天介紹通過python下的pandas庫下的merge方法和concat方法來實現資料集的合併。

merge 函式通過乙個或多個鍵來將資料集的行連線起來。該函式的主要 應用場景是針對同乙個主鍵存在兩張包含不同特徵的表,通過該主鍵的連線,將兩張表進行合併。合併之後,兩張表的行數沒有增加,列數是兩張表的列數之和減一。 

函式的具體引數為:

merge(left,right,how='inner',on=none,left_on=none,right_on=none,

left_index=false,right_index=false,sort=false,suffixes=('_x','_y'),copy=true)

import pandas as pd

df1 = pd.dataframe([[1,2,3],[5,6,7],[3,9,0],[8,0,3]],columns=['x1','x2','x3'])

df2 = pd.dataframe([[1,2],[4,6],[3,9]],columns=['x1','x4'])

print df1

print df2

df3 = pd.merge(df1,df2,how = 'left',on='x1')

print df3

在這裡我分別設定了兩個dataframe類別的變數df1,df2,(平常我們用的表csv檔案,讀取之後也是dataframe 格式)。然後我設定 on=』x1』,即以兩個表中的x1為主鍵進行連線,設定how=』left』 ,即是以兩個表中merge函式中左邊那個表的行為準,保持左邊錶行數不變,拿右邊的表與之合併。結果如下:

第乙個結果為how=』left』的情況。第二個結果為how=』inner』的情況。 

注意:在how=』left』設定後,左邊行之所以能夠保持不變,是因為右邊的表主鍵列沒有重複的值,x下面我會舉個例子作為思考題: 

這是兩張表,分別為df1,df2;

第乙個問題: 

在預設情況下即merge(df1,df2)其他引數為預設值的返回結果是 什麼? 

第二個問題: 

在加上how=』left』之後的返回結果是什麼? 

看完了問題之後,返回去看這兩張表,不著急看答案,仔細想想。

這兩個問題明白之後,表之間的連線和對映應該都能夠明白了。

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

函式的具體引數是:

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

在預設情況下,axis=0為縱向拼接,此時有

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

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

舉個例子

Pandas 按索引合併資料集

import numpy as np import pandas as pd from pandas import series,dataframeleft1 dataframe set index 水果 right1 dataframe print left1 print right1 數量 水果...

Pandas高階 合併資料集concat

本文主要介紹pandas中常用的資料合併的方法concat。先定義乙個生產資料的函式 乙個簡單的dataframe def make df cols,ind data return pd.dataframe data,ind 看下函式效果 in make df ab 1,2 out a b1 a1 ...

pandas合併資料集(merge使用)

merge 合併資料集,通過left,right確定連線字段,預設是兩個資料集相同的字段 引數 說明 left 參與合併的左側dataframe right 參與合併的右側dataframe how 連線方式 inner 預設 還有,outer left right on 用於連線的列名,必須同時存...