I want to retrieve the average_voltage and capacity_grav of the material, but I'm unable to get them.

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":warning: {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(“:white_check_mark: 合并数据已保存:Li_materials_with_battery_data.csv”)