Pandas 合併多個Dataframe(merge,concat)
阿新 • • 發佈:2018-12-25
在資料處理的時候,尤其在搞大資料競賽的時候經常會遇到一個問題就是,多個表單的合併問題,比如一個表單有user_id和age這兩個欄位,另一個表單有user_id和sex這兩個欄位,要把這兩個表合併成只有user_id、age、sex三個欄位的表怎麼辦的,普通的拼接是做不到的,因為user_id每一行之間不是對應的,像拼積木似的橫向拼接肯定是不行的。pandas中有個merge函式可以做到這個實用的功能,merge這個詞會點SQL語言的應該都不陌生。
下面說說merge函式怎麼用:
df = pd.merge(df1, df2, how='left', on='user_id')
用法很簡單,說一下後兩個引數就可以了,how=""引數表示以哪個表的key為準,上面的how="left"表示以表df1為準,而key也就是on=""的引數
how="left"就是說,保留user_id欄位的全部資訊,不增加也不減少,但是拼接的時候只把df2表中的與df1中user_id欄位交集的部分合並上就可以了,如果df2中出現了某個user_id在df1中沒有出現,就拋棄掉這個樣本不作處理。
如果要進行多key合併:
df = pd.merge(df1, df2, how='left', on=['user_id','sku_id'])
但是如果想僅進行簡單的“拼接”而不是合併呢,要使用concat函式:
df = pd.concat( [df_user, dummies_sex, dummies_age, dummies_level], axis=1 )
這樣可以保留這些表單的全部資訊,引數axis=1表示列拼接,axis=0表示行拼接。
要保證背個表單的行數是相同的,並且每一行對應的key也是相同的,列拼接才變得有意義