在數(shù)據(jù)處理的時(shí)候,尤其在搞大數(shù)據(jù)競(jìng)賽的時(shí)候經(jīng)常會(huì)遇到一個(gè)問(wèn)題就是,多個(gè)表單的合并問(wèn)題,比如一個(gè)表單有user_id和age這兩個(gè)字段,另一個(gè)表單有user_id和sex這兩個(gè)字段,要把這兩個(gè)表合并成只有user_id、age、sex三個(gè)字段的表怎么辦的,普通的拼接是做不到的,因?yàn)閡ser_id每一行之間不是對(duì)應(yīng)的,像拼積木似的橫向拼接肯定是不行的。
pandas中有個(gè)merge函數(shù)可以做到這個(gè)實(shí)用的功能,merge這個(gè)詞會(huì)點(diǎn)SQL語(yǔ)言的應(yīng)該都不陌生。
下面說(shuō)說(shuō)merge函數(shù)怎么用:
df = pd.merge(df1, df2, how='left', on='user_id')
用法很簡(jiǎn)單,說(shuō)一下后兩個(gè)參數(shù)就可以了,how=""參數(shù)表示以哪個(gè)表的key為準(zhǔn),上面的how="left"表示以表df1為準(zhǔn),而key也就是on=""的參數(shù)
how="left"就是說(shuō),保留user_id字段的全部信息,不增加也不減少,但是拼接的時(shí)候只把df2表中的與df1中user_id字段交集的部分合并上就可以了,如果df2中出現(xiàn)了某個(gè)user_id在df1中沒(méi)有出現(xiàn),就拋棄掉這個(gè)樣本不作處理。
如果要進(jìn)行多key合并:
df = pd.merge(df1, df2, how='left', on=['user_id','sku_id'])
但是如果想僅進(jìn)行簡(jiǎn)單的“拼接”而不是合并呢,要使用concat函數(shù):
df = pd.concat( [df_user, dummies_sex, dummies_age, dummies_level], axis=1 )
這樣可以保留這些表單的全部信息,參數(shù)axis=1表示列拼接,axis=0表示行拼接。
要保證背個(gè)表單的行數(shù)是相同的,并且每一行對(duì)應(yīng)的key也是相同的,列拼接才變得有意義
以上這篇Pandas 合并多個(gè)Dataframe(merge,concat)的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長(zhǎng)站。
新聞熱點(diǎn)
疑難解答
圖片精選