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

Pandas使用pivot生成透视表时保留age等额外列的实现方法

方案1:同一分组下age值唯一的场景(你的样例数据属于这类)

直接修改原pivot方法的index参数,把age加入分组维度即可,完整代码如下:

output = df.pivot(["Animal", "age", "Food"], "Day", "kg") \
           .add_prefix("Day") \
           .reset_index() \
           .rename_axis(None, axis=1)
# 可根据需要调整列顺序
output = output[["Animal", "Food", "age", "Day1", "Day2"]]

方案2:同一分组下存在多个age值、只需保留任意age的场景

如果同一个Animal/Animal+Food组合对应多个不同age,不想拆分多行只保留任意一个age,用如下实现:

# 按Animal分组取第一个出现的age作为映射规则,如果要按Animal+Food分组可把groupby参数改成["Animal", "Food"]
age_map = df.groupby("Animal")["age"].first()

# 原透视表逻辑不变
output = df.pivot(["Animal", "Food"], "Day", "kg") \
           .add_prefix("Day") \
           .reset_index() \
           .rename_axis(None, axis=1)

# 映射添加age列
output["age"] = output["Animal"].map(age_map)
# 调整列顺序
output = output[["Animal", "Food", "age", "Day1", "Day2"]]

两种方案输出的结果都和你期望的格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:42:02