DataFrame含3105列仅2个唯一列名,如何按列名分组求行均值?
解决方法
直接用Pandas的groupby按列名分组,配合mean()就能搞定,步骤如下:
- 先把Gene列设为行索引(避免计算时把Gene列也纳入分组):
df = df.set_index('Gene')
- 按列名分组计算每行均值:
指定按列方向(axis=1)分组,用列名作为分组依据,然后对每组求行均值:
result_df = df.groupby(df.columns, axis=1).mean()
- (可选)把Gene转回普通列:
如果需要Gene作为列而不是索引,执行重置索引操作:
result_df = result_df.reset_index()
这样得到的result_df就只有Gene(可选)、Cell_A、Cell_B三列,每一行对应单个基因在两类细胞中的均值。
补充说明
groupby(df.columns, axis=1)会自动把所有同名列(比如所有Cell_A列)归为一组mean()默认按行维度计算,正好对应每个基因在同组列中的平均值- 如果你的Gene列已经是DataFrame的索引,可以直接跳过第一步
内容的提问来源于stack exchange,提问作者careless_caramel
相关产品推荐
相关产品推荐

