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

按Name与Year分组,用中位数转换Pandas DataFrame数据

按Name和Year分组计算Value的中位数

要实现你需要的聚合效果,直接使用Pandas的分组聚合功能即可,具体代码如下:

import pandas as pd

# 加载原始数据(如果是从CSV文件读取)
df = pd.read_csv("your_input_data.csv")

# 核心操作:按Name和Year分组,计算Value的中位数
aggregated_df = df.groupby(["Name", "Year"], as_index=False)["Value"].median()

# 输出符合格式要求的结果
print(aggregated_df.to_csv(index=False, sep=","))

关键说明

  • groupby(["Name", "Year"]):将数据按Name和Year的唯一组合分组,保证每个品牌每年的数据单独计算中位数
  • as_index=False:让分组后的Name和Year保持为普通列,而非索引,和你期望的输出结构完全匹配
  • median():自动处理奇偶样本量的中位数计算逻辑:
    • 当组内样本数为偶数时,取中间两个数的平均值(比如Wendys 2021年的(6915+6916)/2=6915.5)
    • 当组内样本数为奇数时,取中间位置的数值(比如Wendys 2023年的中位数是7129)

输出结果

运行代码后会得到你需要的格式:

Name,Year,Value
Wendys,2021,6915.5
Wendys,2022,6979.5
Wendys,2023,7129.0
Wendys,2024,7166.0
White Castle,1950,89.0
White Castle,1951,92.0

如果希望将整数形式的中位数显示为整数(如7129而非7129.0),可以添加一行类型转换代码:

aggregated_df["Value"] = aggregated_df["Value"].where(
    aggregated_df["Value"] % 1 != 0,
    aggregated_df["Value"].astype(int)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:53:21