这是起始数据表:
Organ 1000.1 2000.1 3000.1 4000.1 ....
a 333 34343 3434 23233
a 334 123324 1233 123124
a 33 2323 232 2323
b 3333 4444 333 34444
b 33333 3333 333 33333
.
.
.
依此类推。这些数字只是随机数,如您所见,“器官”列的值包含一些重复项。
我正在尝试计算计数,均值和标准差,以便可以像这样计算p值:
data = pd.read_excel('file')
data_stat = data.groupby(data.columns[0]).aggregate(['count','mean','std'])
这确实计算了三个参数,但是使用错误的格式:
上面的屏幕截图与示例数据表不匹配,只是想显示结果格式。使用reset_index()尝试过,但是没有用:
关于我如何摆脱带有'Organ'文本的行的任何建议(删除该行后,将所有内容向上移动,以便没有空白行)?
当然,如果不需要分解第一行来计算p值,则没有必要。我的最终目标是计算每行所有可能组合之间的p值(例如a vs b,a vs c,a vs d,a vs e,...,b vs c,b vs d等)如果我再次陷入困境,我觉得每列都会在以后创建另一篇文章。
您在列中获得MultiIndex
,并且要更改第一列,请使用:
df = data.groupby(data.columns[0]).aggregate(['count','mean','std']).reset_index()
L = [(a,b) if b!= '' else ('value', a)for a,b in df.columns.tolist()]
print (L)
[('value', 'Organ'), ('1000.1', 'count'), ('1000.1', 'mean'), ('1000.1', 'std'),
('2000.1', 'count'), ('2000.1', 'mean'), ('2000.1', 'std'), ('3000.1', 'count'),
('3000.1', 'mean'), ('3000.1', 'std'), ('4000.1', 'count'), ('4000.1', 'mean'),
('4000.1', 'std')]
df.columns = pd.MultiIndex.from_tuples(L)
print (df)
value 1000.1 2000.1 \
Organ count mean std count mean std
0 a 3 233.333333 173.494476 3 53330.0 62695.216141
1 b 2 18333.000000 21213.203436 2 3888.5 785.595634
3000.1 4000.1
count mean std count mean std
0 3 1633 1638.047924 3 49560.0 64560.464659
1 2 333 0.000000 2 33888.5 785.595634
可能使用MultiIndex
作为显示值:
#temporaly display MultiIndex
with pd.option_context('display.multi_sparse', False):
print (df)
value 1000.1 1000.1 1000.1 2000.1 2000.1 2000.1 \
Organ count mean std count mean std
0 a 3 233.333333 173.494476 3 53330.0 62695.216141
1 b 2 18333.000000 21213.203436 2 3888.5 785.595634
3000.1 3000.1 3000.1 4000.1 4000.1 4000.1
count mean std count mean std
0 3 1633 1638.047924 3 49560.0 64560.464659
1 2 333 0.000000 2 33888.5 785.595634