要按照某个key(某一列),去匹配不同df下的其他这个key的其他信息,使用pandas的merge方法
代码示例:
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中没有对应的数据,则这些字段会自动填充为空值。