Pandas 基礎(9) - 組合方法 merge


首先, 還是以天氣為例, 准備如下數據:

df1 = pd.DataFrame({ 'city': ['newyork', 'chicago', 'orlando'], 'temperature': [21, 24, 32], }) df2 = pd.DataFrame({ 'city': ['newyork', 'chicago', 'orlando'], 'humidity': [89, 79, 80], }) df = pd.merge(df1, df2, on='city') 

輸出:

上面的例子就是以 'city' 為基准對兩個 dataframe 進行合並, 但是兩組數據都是高度一致, 下面調整一下:

df1 = pd.DataFrame({ 'city': ['newyork', 'chicago', 'orlando', 'baltimore'], 'temperature': [21, 24, 32, 29], }) df2 = pd.DataFrame({ 'city': ['newyork', 'chicago', 'san francisco'], 'humidity': [89, 79, 80], }) df = pd.merge(df1, df2, on='city') 

輸出:

從輸出我們看出, 通過 merge 合並, 會取兩個數據的交集.

那么, 我們應該可以設想到, 可以通過調整參數, 來達到不同的取值范圍. 
取並集:

df = pd.merge(df1, df2, on='city', how='outer') 

輸出:

左對齊:

df = pd.merge(df1, df2, on='city', how='left') 

輸出:

右對齊:

df = pd.merge(df1, df2, on='city', how='right') 


另外, 在我們取並集的時候, 我們有時可能會想要知道, 某個數據是來自哪邊, 可以通過 indicator 參數來獲取:

df = pd.merge(df1, df2, on='city', how='outer', indicator=True) 

輸出:

在上面的例子中, 被合並的數據的列名是沒有沖突的, 所以合並的很順利, 那么如果兩組數據有相同的列名, 又會是什么樣呢? 看下面的例子:

df1 = pd.DataFrame({ 'city': ['newyork', 'chicago', 'orlando', 'baltimore'], 'temperature': [21, 24, 32, 29], 'humidity': [89, 79, 80, 69], }) df2 = pd.DataFrame({ 'city': ['newyork', 'chicago', 'san francisco'], 'temperature': [30, 32, 28], 'humidity': [80, 60, 70], }) df = pd.merge(df1, df2, on='city') 

輸出:

我們發現, 相同的列名被自動加上了 'x', 'y' 作為區分, 為了更直觀地觀察數據, 我們也可以自定義這個區分的標志:

df3 = pd.merge(df1, df2, on='city', suffixes=['_left', '_right']) 

輸出:

好了, 以上, 就是關於 merge 合並的相關內容, enjoy~~~

 


免責聲明!

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



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