如何在pandas中按年份和WFR分组计算LCR的条件均值
实现方案
你需要的是按「年份+WFR」两个字段联合分组后计算LCR的平均值,主流工具的实现方式如下:
Python(Pandas)
直接对两个字段联合分组后取均值即可:
import pandas as pd # 假设你的数据集已读取为DataFrame对象df # 输出长表格式:每行对应 年份+WFR 分组的均值 result_long = df.groupby(['年份', 'WFR'], as_index=False)['LCR'].mean() # 若需要宽表格式:每行对应一个年份,两列分别存WFR=0和WFR=1的均值 result_wide = df.groupby(['年份', 'WFR'])['LCR'].mean().unstack().add_prefix('LCR均值_WFR=')
SQL
对两个字段联合分组后调用聚合函数即可:
-- 长表格式输出 SELECT 年份, WFR, AVG(LCR) AS LCR平均值 FROM 你的表名 GROUP BY 年份, WFR ORDER BY 年份, WFR;
如果需要行转列输出宽表:
-- 宽表格式输出 SELECT 年份, AVG(CASE WHEN WFR = 0 THEN LCR END) AS LCR均值_WFR0, AVG(CASE WHEN WFR = 1 THEN LCR END) AS LCR均值_WFR1 FROM 你的表名 GROUP BY 年份 ORDER BY 年份;
R(dplyr)
library(dplyr) # 假设数据集为df result <- df %>% group_by(年份, WFR) %>% summarise(LCR平均值 = mean(LCR, na.rm = TRUE)) %>% ungroup()
注意事项
- 以上实现默认会自动跳过没有数据的分组,如果你需要保留所有年份+WFR的组合,可以额外补充空值填充逻辑
- 计算均值时如果需要排除LCR为空的样本,可在对应方法里添加空值过滤参数
内容的提问来源于stack exchange,提问作者Marzieh Karimi
相关产品推荐
相关产品推荐

