多级列DataFrame计算重复样本均值遇NaN问题求助
问题分析与解决方法
你的问题出在melt+groupby+apply的组合逻辑偏差,导致后续unstack时结构混乱,产生大量NaN。具体来说:
- melt把宽表转成长表后,原本的列层级信息被拆进
variable列,你groupby的disease_state和disease_state_general来自拆分后的列层级,此时apply行均值是对每个组内的所有行(对应原始表的不同行)求平均,得到的结果索引是原始行索引+分组键,unstack后因索引不匹配自然出现大量缺失值,完全偏离了你“对同一生物重复下的三重样本列求均值”的需求。
正确处理方式(无需melt,直接针对多级列操作)
假设你的DataFrame列层级是[disease_state, 生物重复编号, 三重样本编号](比如列名类似('control', '1', 'rep1')、('sporadic_PD', '2', 'rep3')),直接按前两层列分组求均值即可:
# 按疾病状态+生物重复编号分组,计算每组(三重样本)的均值 result = test_data.groupby(level=['disease_state', '生物重复编号'], axis=1).mean() # 按需调整列名,比如合并层级为你要的disease_state_general格式 result.columns = [f"{state}_{rep}" for state, rep in result.columns]
如果列层级是[disease_state_general, disease_state, 生物重复, 三重样本],只需调整groupby的level参数:
result = test_data.groupby(level=['disease_state_general', '生物重复'], axis=1).mean()
内容的提问来源于stack exchange,提问作者Alex L
相关产品推荐
相关产品推荐

