Python Pandas数据帧在groupby agg之后有额外的标头
我有两个数据帧,它们是50列,格式如下Python Pandas数据帧在groupby agg之后有额外的标头,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有两个数据帧,它们是50列,格式如下 ID v10 v9 GENE NM_198317 0.0 9.666823e-01 KLHL17 NM_198317 -1.0 0.000000e+00 KLHL17 我想平均基因匹配的值,所以我使用 common_mouse = common_mouse.groupby(['GENE'], as_index=False).agg([np.average])
ID v10 v9 GENE
NM_198317 0.0 9.666823e-01 KLHL17
NM_198317 -1.0 0.000000e+00 KLHL17
我想平均基因匹配的值,所以我使用
common_mouse = common_mouse.groupby(['GENE'], as_index=False).agg([np.average])
这导致了一个表,每列有两个标题,但我只想保留旧标题
logger.info("Column headers: %s" % list(common_mouse.columns.values))
显示
而不是
['v10', 'v11', 'v12']
我尝试使用zip(*common_mouse.columns.values)
重新分配列,但似乎无法使其工作。是否有办法防止或删除列标题中的新“平均”字段?重置索引帮助您
像这样
import pandas as pd
import numpy as np
vetor = pd.DataFrame({'ID':['NM_198317','NM_198317'], 'v10':[0.0, -1.0], 'v9':[9.666823e-01, 0.000000e+00], 'GENE':['KLHL17', 'KLHL17']})
common_mouse = vetor.groupby(['GENE']).agg([np.average]).reset_index()
print(common_mouse)
您正在使用函数列表作为
agg
的参数。当您这样做时,您正在告诉Pandas groupby,应该为每个列计算几个聚合函数。它通过创建多索引列对象让您知道
因此,不要给它一个要聚合的函数列表。只给它一个(不在列表中)
使用标量
字符串运算符
然而,熊猫有预先编码的字符串,它已经优化了算法。平均是其中之一。改用mean
string参数
common_mouse.groupby(['GENE'], as_index=False).agg('mean')
GENE v10 v9
0 KLHL17 -0.5 0.483341
分组法
更进一步,熊猫有一个专门的分组方法
common_mouse.groupby(['GENE'], as_index=False).mean()
GENE v10 v9
0 KLHL17 -0.5 0.483341
我不明白
v11
是从哪里来的。但无论如何,只要使用common\u mouse.groupby('GENE',as\u index=False).agg('mean')
common_mouse.groupby(['GENE'], as_index=False).agg('mean')
GENE v10 v9
0 KLHL17 -0.5 0.483341
common_mouse.groupby(['GENE'], as_index=False).mean()
GENE v10 v9
0 KLHL17 -0.5 0.483341