以各個城市的天氣為例, 先準備下面的資料:
印度天氣的相關資訊:
import pandas as pd
india_weather = pd.DataFrame({
'city': ['mumbai', 'delhi', 'banglore'],
'temperature': [32, 34, 30],
'humidity': [80, 60, 72]
})
india_weather
美國天氣的相關資訊:
us_weather = pd.DataFrame({
'city': ['newyork', 'chicago', 'orlando'],
'temperature': [21, 24, 32],
'humidity': [68, 65, 70]
})
us_weather
用 concat 組合上面兩個 dataframe:
df = pd.concat([india_weather, us_weather])
df
輸出:
上面的輸出最左邊的序列號是重複的, 原因是資料分別來自兩個 dataframe 的索引值, 可以通過忽略原本的索引來做改變:
df = pd.concat([india_weather, us_weather], ignore_index=True)
還可以這樣輸出:
df = pd.concat([india_weather, us_weather], keys=['india', 'us'])
輸出:
由於上面設定了關鍵字, 所以就可以利用這個關鍵字獲取相關的資訊:
df.loc['india']
輸出:
從上面一系列的輸出可以看出, 這些組合都是縱向的組合, 那麼在實際應用中, 我們是經常需要做橫向組合的, 比如下面的例子:
temperature_df = pd.DataFrame({
'city': ['newyork', 'chicago', 'orlando'],
'temperature': [21, 24, 32],
})
windspeed_df = pd.DataFrame({
'city': ['newyork', 'chicago', 'orlando'],
'temperature': [7, 12, 9],
})
橫向組合:
df = pd.concat([temperature_df, windspeed_df], axis=1)
輸出:
從目前的輸出來看, 兩組資料對應的很好, 同一個城市都在同一行上, 那如果我們把資料來源改下:
windspeed_df = pd.DataFrame({
'city': ['chicago', 'newyork'],
'temperature': [12, 7],
})
我改動了關於風速的資料, 顛倒了城市的順序, 還刪掉了一個城市, 大家可以自己執行一下, 看到輸出的結果有點亂了. 遇到這種情況, 我們可以通過給原資料加索引的方式, 來設定資料的排序:
temperature_df = pd.DataFrame({
'city': ['newyork', 'chicago', 'orlando'],
'temperature': [21, 24, 32],
}, index=[0, 1, 2])
windspeed_df = pd.DataFrame({
'city': ['chicago', 'newyork'],
'temperature': [12, 7],
}, index=[1, 0])
輸出:
這樣資料順序就調好了.
下面再介紹一下 dataframe 與 series 的組合方式:
s = pd.Series(['Humidity', 'Dry', 'Rain'], name='event')
df = pd.concat([temperature_df, s], axis=1)
輸出:
以上就是關於 concat 的組合資料的一些常用方法啦, 下一篇會帶來更勁爆的組合方法, enjoy~~~