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

Pandas如何将type列按取值拆分,按日期计算各类型平均重量生成新列

Pandas 按类别列拆分并计算分组均值实现方法

你要实现的是典型的长表转宽表+分组聚合需求,不需要手动拆分DataFrame再合并,有两种简便实现方式:

方法1:用pivot_table(最直观)

pivot_table本身就支持按指定维度分组、聚合计算,一行代码即可完成:

import pandas as pd

# 原始数据构造
d = {'date' : ['2020-02-01', '2020-02-01', '2020-02-01', '2020-02-01', '2020-02-02', '2020-02-02', '2020-02-02'], 
     'type' : ['Bird', 'Dog', 'Cat', 'Bird', 'Dog', 'Cat', 'Bird'], 
     'weight' :  [1, 2, 3, 4, 5, 6, 7]}
df = pd.DataFrame(d)

# 核心逻辑:以date为行索引,type的取值为列名,对weight求均值
result = df.pivot_table(
    index='date',
    columns='type',
    values='weight',
    aggfunc='mean'
).reset_index()

# 可选:修改列名为小写格式匹配你的需求
result.columns = ['date', 'bird', 'cat', 'dog']

运行后输出结果:

date  bird  cat  dog
0  2020-02-01   2.5  3.0  2.0
1  2020-02-02   7.0  6.0  5.0

方法2:用groupby + unstack(符合分组逻辑习惯)

如果你更熟悉groupby语法,可以先按date和type分组计算均值,再把type维度展开为列:

result = df.groupby(['date', 'type'])['weight'].mean().unstack().reset_index()
# 同样可自定义列名
result.columns = ['date', 'bird', 'cat', 'dog']

两种方法最终输出结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:18:03