pandas如何计算排除指定单列后的DataFrame每行平均值
pandas按行计算平均值排除年份列的实现方案
你当前使用的代码存在两个问题:
df.mean(axis=0)的作用是按列计算平均值,要实现每行平均值的计算,需要将轴参数改为axis=1- 代码没有排除存储年份的未命名列,大数值的年份会拉偏统计结果
你使用的数据集结构如下:
可以选择以下任意一种方式实现需求:
方法1:自动过滤未命名的年份列
通过列名特征直接筛掉所有Unnamed开头的年份列,不需要手动确认列位置,适配列顺序变动的场景:
# 排除所有列名以'Unnamed'开头的列,再按行计算均值 row_avg = df.filter(regex='^(?!Unnamed)').mean(axis=1) print(row_avg)
方法2:按列位置排除年份列
从你的数据集结构看,年份列是第一列,可以直接用位置索引切片跳过第一列计算,写法最简洁:
# 从第二列开始选取所有列,按行计算均值 row_avg = df.iloc[:, 1:].mean(axis=1) print(row_avg)
方法3:将年份列设为索引(推荐后续需要按年份匹配结果时使用)
把年份列设置为DataFrame的行索引后,所有行维度的统计计算都会自动跳过索引列,不需要每次手动筛列:
# 将第一列的年份设置为行索引 df = df.set_index(df.columns[0]) # 直接计算行均值即可,不会纳入年份值 row_avg = df.mean(axis=1) print(row_avg)
内容的提问来源于stack exchange,提问作者Danny Ocean
相关产品推荐
相关产品推荐

