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

基于多规则将月度面板数据转换为季度数据的方法求助

用Pandas实现月度转季度的差异化聚合

步骤1:导入依赖并加载数据

首先导入pandas,将数据加载到DataFrame(从文件读取可替换为pd.read_csv()):

import pandas as pd

# 构造原始数据集
data = {
    "Date": ["2021-01", "2021-02", "2021-03", "2021-01", "2021-02", "2021-03"],
    "Country": ["Austria", "Austria", "Austria", "Belgium", "Belgium", "Belgium"],
    "Inflation": [3.2, 3.3, 3.8, 4.7, 3.8, 5.4],
    "Payment": [120.0, 205.5, 42.5, 87.0, 92.0, 116.0]
}
df = pd.DataFrame(data)

步骤2:处理日期并生成季度标识

将Date列转为日期类型,提取YYYY Qx格式的季度字段:

# 转换日期格式
df["Date"] = pd.to_datetime(df["Date"])
# 生成季度标识
df["Quarter"] = df["Date"].dt.to_period("Q").astype(str)

步骤3:分组执行差异化聚合

按国家+季度分组,分别计算通胀率均值、付款额总和:

# 分组聚合逻辑
agg_result = df.groupby(["Country", "Quarter"], as_index=False).agg(
    Inflation=("Inflation", "mean"),
    Payment=("Payment", "sum")
)
# 调整列顺序并重命名
agg_result = agg_result[["Quarter", "Country", "Inflation", "Payment"]].rename(columns={"Quarter": "Date"})
# 通胀率保留一位小数(匹配示例结果)
agg_result["Inflation"] = agg_result["Inflation"].round(1)

最终输出结果

运行代码后,agg_result会输出你需要的格式:

Date  Country  Inflation  Payment
0  2021 Q1  Austria        3.4    368.0
1  2021 Q1  Belgium        4.6    295.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:02:20