要按照某個key(某一列),去匹配不同df下的其他這個key的其他資訊,使用pandas的merge方法

Amiyai發表於2024-09-22

程式碼示例:
python
Copy code
import pandas as pd

讀取表格

target_df = pd.read_excel('target_models.xlsx') # 總目標車型表
table2_df = pd.read_excel('table2.xlsx') # 包含 id 和 url 的表
table3_df = pd.read_excel('table3.xlsx') # 包含電池型別、驅動方式等資訊的表

步驟1:根據Model名稱匹配 table2 中的 id 和 url

merged_df = pd.merge(target_df, table2_df[['Model', 'id', 'url']], on='Model', how='left')

步驟2:透過id在 table3 中查詢對應的電池型別、驅動方式等資訊

final_df = pd.merge(merged_df, table3_df[['id', 'battery_type', 'drive_mode', 'owner_tested_energy_consumption', 'valid_sample_size']], on='id', how='left')

儲存為新表格

final_df.to_excel('merged_final_table.xlsx', index=False)
解釋:
資料讀取:

target_models.xlsx 是總目標車型表,包含 BEV Model 的名稱。
table2.xlsx 包含 Model, id, url 資訊。
table3.xlsx 包含 id, battery_type, drive_mode, owner_tested_energy_consumption, valid_sample_size 資訊。
步驟1:匹配 Model 和 id:

使用 pandas.merge() 根據 Model 列,將 id 和 url 從 table2 合併到 target_df 中,how='left' 確保在目標表中沒有匹配的 Model 的話會填充為空值。
步驟2:根據 id 匹配資訊:

再次使用 merge(),根據 id 列將 battery_type 等資訊從 table3 合併進來,使用 how='left' 填充沒有找到的 id 對應的資料為 NaN(空值)。
結果儲存:

將最終合併後的表格儲存為新的 Excel 檔案 merged_final_table.xlsx。
結果:
合併後的表格將會包含:

Model 名稱(來自目標表)
對應的 id, url(來自第二張表)
battery_type, drive_mode, owner_tested_energy_consumption, valid_sample_size(來自第三張表)
如果某個 Model 在表2或表3中沒有對應的資料,則這些欄位會自動填充為空值。

相關文章