今天借著這個(gè)機(jī)會,就為大家盤點(diǎn)一下pandas中合并數(shù)據(jù)的5個(gè)函數(shù)。
join
join是基于索引的橫向拼接,如果索引一致,直接橫向拼接。如果索引不一致,則會用Nan值填充。
索引一致
x = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']},
index=[0, 1, 2])
y = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
'D': ['D0', 'D2', 'D3']},
index=[0, 1, 2])
x.join(y)
結(jié)果如下:
索引不一致
x = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']},
index=[0, 1, 2])
y = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
'D': ['D0', 'D2', 'D3']},
index=[1, 2, 3])
x.join(y)
結(jié)果如下:
merge
merge是基于指定列的橫向拼接,該函數(shù)類似于關(guān)系型數(shù)據(jù)庫的連接方式,可以根據(jù)一個(gè)或多個(gè)鍵將不同的DatFrame連接起來。該函數(shù)的典型應(yīng)用場景是,針對同一個(gè)主鍵存在兩張不同字段的表,根據(jù)主鍵整合到一張表里面。
x = pd.DataFrame({'姓名': ['張三', '李四', '王五'],
'班級': ['一班', '二班', '三班']})
y = pd.DataFrame({'專業(yè)': ['統(tǒng)計(jì)學(xué)', '計(jì)算機(jī)', '繪畫'],
'班級': ['一班', '三班', '四班']})
pd.merge(x,y,how="left")
結(jié)果如下:
concat
concat函數(shù)既可以用于橫向拼接,也可以用于縱向拼接。
縱向拼接
x = pd.DataFrame([['Jack','M',40],['Tony','M',20]], columns=['name','gender','age'])
y = pd.DataFrame([['Mary','F',30],['Bob','M',25]], columns=['name','gender','age'])
z = pd.concat([x,y],axis=0)
z
結(jié)果如下:
橫向拼接
x = pd.DataFrame({'姓名': ['張三', '李四', '王五'],
'班級': ['一班', '二班', '三班']})
y = pd.DataFrame({'專業(yè)': ['統(tǒng)計(jì)學(xué)', '計(jì)算機(jī)', '繪畫'],
'班級': ['一班', '三班', '四班']})
z = pd.concat([x,y],axis=1)
z
結(jié)果如下:
append
append主要用于縱向追加數(shù)據(jù)。
x = pd.DataFrame([['Jack','M',40],['Tony','M',20]], columns=['name','gender','age'])
y = pd.DataFrame([['Mary','F',30],['Bob','M',25]], columns=['name','gender','age'])
x.append(y)
結(jié)果如下:
combine
conbine可以通過使用函數(shù),把兩個(gè)DataFrame按列進(jìn)行組合。
x = pd.DataFrame({"A":[3,4],"B":[1,4]})
y = pd.DataFrame({"A":[1,2],"B":[5,6]})
x.combine(y,lambda a,b:np.where(a>b,a,b))
結(jié)果如下:
注:上述函數(shù),用于返回對應(yīng)位置上的最大值。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6808瀏覽量
88743 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4277瀏覽量
62323 -
索引
+關(guān)注
關(guān)注
0文章
59瀏覽量
10456
發(fā)布評論請先 登錄
相關(guān)推薦
評論