import pandas as pd
import time
from mp_api.client import MPRester
读取已有包含 material_id 的 CSV 文件
df = pd.read_csv(“Li_summary_materials.csv”)
material_ids = df[“material_id”].tolist()
battery_data =
with MPRester(“API”) as mp:
for i, mid in enumerate(material_ids):
try:
docs = mp.battery.get_data_for_materials([mid])
for d in docs:
battery_data.append({
“material_id”: mid,
“average_voltage”: d.average_voltage,
“capacity_grav”: d.capacity_grav,
“capacity_vol”: d.capacity_vol,
“energy_grav”: d.energy_grav,
“energy_vol”: d.energy_vol,
“working_ion”: d.working_ion,
“capacity_grav”:d.capacity_grav
})
except Exception as e:
print(f" {mid} 查询失败:{e}")
# 🌙 添加节流保护,避免访问频率过高(1秒或更长)
time.sleep(1.0)
# ✅ 每10次输出一次进度
if (i + 1) % 10 == 0:
print(f"🔁 已完成 {i + 1}/{len(material_ids)} 条")
合并 battery 数据与原始数据
battery_df = pd.DataFrame(battery_data)
merged_df = df.merge(battery_df, on=“material_id”, how=“left”)
保存结果
merged_df.to_csv(“Li_materials_with_battery_data.csv”, index=False, encoding=‘utf-8-sig’)
print(“ 合并数据已保存:Li_materials_with_battery_data.csv”)