You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合理构建含多值的兽医预约Pandas DataFrame?

解决方案

问题根源

你写的字典里"Pet Information"是嵌套字典,Pandas无法直接将这种混合列表与嵌套字典的结构转换为DataFrame,这就是报错的原因。而且Excel本身不支持嵌套列结构,所以这种写法既不兼容Pandas也没法导出到Excel。

方案1:扁平化结构(推荐,兼容Excel)

把所有信息拆成平级列,既符合Pandas的要求,也能直接导出/导入Excel,查询操作也更直观。

构造DataFrame代码

import pandas as pd

# 构造多条预约数据
appointment_data = [
    {"Appointment": "Appointment: Natasha", "Pet Name": "Milo", "Pet Breed": "Golden Retriever", "Pet Age": 3},
    {"Appointment": "Appointment: Jake", "Pet Name": "Luna", "Pet Breed": "Siamese Cat", "Pet Age": 2},
    {"Appointment": "Appointment: Emily", "Pet Name": "Max", "Pet Breed": "Bulldog", "Pet Age": 5}
]

# 转换为DataFrame
df_appt = pd.DataFrame(appointment_data)
print(df_appt)

查询宠物信息

通过主人姓名筛选,直接用字符串匹配:

# 查看Natasha的宠物信息
natasha_pet = df_appt[df_appt["Appointment"].str.contains("Natasha")]
print(natasha_pet)

如果需要更灵活的查询,也可以单独添加Owner Name列,后续筛选更直接:

# 添加主人姓名列
df_appt["Owner Name"] = df_appt["Appointment"].str.replace("Appointment: ", "")

# 直接通过主人姓名筛选
jake_pet = df_appt[df_appt["Owner Name"] == "Jake"]
print(jake_pet)

Excel表格结构设计

直接用平级列,每一行对应一条预约记录,结构如下:

AppointmentPet NamePet BreedPet Age
Appointment: NatashaMiloGolden Retriever3
Appointment: JakeLunaSiamese Cat2
Appointment: EmilyMaxBulldog5

这样的表格可以直接用pd.read_excel("你的文件路径.xlsx")导入为DataFrame,导出则用df_appt.to_excel("预约记录.xlsx", index=False)。

方案2:嵌套列结构(仅适用于Pandas,不兼容Excel)

如果一定要保留"Pet Information"的分组概念,可以用Pandas的多级列,但导出Excel时会被自动扁平化:

import pandas as pd

data = {
    "Appointment": ["Appointment: Natasha", "Appointment: Jake"],
    ("Pet Information", "Pet Name"): ["Milo", "Luna"],
    ("Pet Information", "Pet Breed"): ["Golden Retriever", "Siamese Cat"],
    ("Pet Information", "Pet Age"): [3, 2]
}

df_appt = pd.DataFrame(data)
print(df_appt)

这种结构在Pandas里可以通过df_appt["Pet Information"]直接查看所有宠物信息列,但导出到Excel后,列名会变成Pet Information_Pet Name这类格式,实用性不如扁平化结构。

内容的提问来源于stack exchange,提问作者aki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:05:01