基于多规则将月度面板数据转换为季度数据的方法求助
用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
相关产品推荐
相关产品推荐

