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

Python:提取DataFrame列并将重复列替换为均值的实现求助

解决重复列名的均值计算问题

针对你的需求,先修正你现有for循环的问题,再提供更简洁的pandas内置方法:

方法一:修正你的for循环实现

你的代码核心问题是没有正确提取对应时间点的列,以及后续赋值逻辑不完善。以下是修正后的完整代码:

import pandas as pd

# 假设你的原始DataFrame名为df,行索引为外显子
column_names = df.columns
unique_ages = set(column_names)
mean_df = pd.DataFrame(index=df.index, columns=unique_ages)

for age in unique_ages:
    # 提取所有列名为当前age的列
    age_cols = df.loc[:, age]
    # 计算每行的均值:单列时自动返回原数据,多列时计算均值
    mean_values = age_cols.mean(axis=1)
    # 将结果赋值到mean_df的对应列
    mean_df[age] = mean_values

关键修正点:

  • 用df.loc[:, age]精准提取所有列名为age的列,兼容单列/多列场景
  • 无需单独判断列数:pandas的mean(axis=1)对单列会直接返回原数据(单列均值即自身),可统一处理
  • 直接复用原始DataFrame的索引df.index,避免手动传入exons可能出现的索引不匹配问题

方法二:更简洁的pandas内置方法(推荐)

pandas提供了按列名分组聚合的内置方法,无需手动写循环,代码更简洁高效:

import pandas as pd

# 按列名分组(axis=1表示按列分组),直接计算每行的均值
mean_df = df.groupby(df.columns, axis=1).mean()

这个方法会自动将所有同名列分组,计算每组的行均值,直接生成目标DataFrame,完美适配这类重复列聚合的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:05:14