python提供了如何对具有相同索引值的行进行计算
我有一个名为Resultable的数据框架,它看起来像:python提供了如何对具有相同索引值的行进行计算,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个名为Resultable的数据框架,它看起来像: df Index Tag Exp. m/z Intensity Norm_Intensity 114 C09.xls 1013.328 10000 0.125 114 C10.xls 1013.325 20000 0.115 114 C11.xls 1013.329
df Index Tag Exp. m/z Intensity Norm_Intensity
114 C09.xls 1013.328 10000 0.125
114 C10.xls 1013.325 20000 0.115
114 C11.xls 1013.329 30000 0.128
180 C09.xls 1257.52 11000 0.215
180 C10.xls 1257.59 12000 0.220
196 C09.xls 1647.593 13000 0.432
196 C10.xls 1647.528 14000 0.450
196 C11.xls 1647.601 31000 0.585
其中,df索引值是打印或导出到xls时的索引值,Tag=str,Exp.m/z、Intensity和Norm_Intensity为64。标记值将来自指定文件夹中的文件名,因此它们可能会有所不同
如您所见,每个标记都包含类似的Exp.m/z值(如1013.328、1013.325、1013.329)及其相应的强度和Norm_强度值。这些m/z值被认为是相同的,我想知道是否有一种方法可以根据其df索引值对行值进行计算,例如平均值、标准差、CV。计算是否需要另一个数据帧并不重要
resulttable_calc = resulttable.groupby(resulttable.index)
group_result = resulttable_calc.agg({'Exp. m/z':'mean','Intensity':'mean', 'Norm_Intensity':'mean'})
似乎没有做我想做的。这样做的结果是:
df Index Exp. m/z Intensity Norm_Intensity
(114, 'C09.xls') 1013.328 10000 0.125
(114, 'C10.xls') 1013.325 20000 0.115
(114, 'C11.xls') 1013.329 30000 0.128
(180, 'C09.xls') 1257.52 11000 0.215
(180, 'C10.xls') 1257.59 12000 0.220
(196, 'C09.xls') 1647.593 13000 0.432
(196, 'C10.xls') 1647.528 14000 0.450
(196, 'C11.xls') 1647.601 31000 0.585
编辑
打印输出(resultable.index)为:
我假设标签对应于每个标签 您的索引实际上是一个
多索引
。由于您要将其传递给groupby()
,所以您将在多索引的每个组合上生成一个分组。我假设您希望按df Index
分组-如果是这样,您需要按level=0
分组
试试这个:
resulttable_calc = resulttable.groupby(level=0)
group_result = resulttable_calc.agg({'Exp. m/z':'mean','Intensity':'mean', 'Norm_Intensity':'mean'})
“经验m/z”是什么意思?你怎么计算呢?我认为您可以使用groupby
函数,该函数提供基于其他列values.Exp的计算结果,例如平均值、标准值。m/z不计算;它们来自我在代码中附加的文件。有没有办法在df索引值上使用groupby?我确实在代码中使用了groupby来生成可生成的数据帧。df.index
的输出是什么?@Andrew L我编辑了真正起作用的帖子。非常感谢。我能买一本关于熊猫的书吗?我希望在这方面能学到更多depth@BongKyoSeo是的,韦斯·麦金尼我相信是《熊猫》的作者。他已经就此写了一本书。有没有办法在同一时间用另一个专栏来做这件事?现在我有了df索引和一个名为Cybi_标记的列。我试过做resultable\u calc=resultable.groupby(level=0)['Cybi\u Tag']
,但它说找不到列:Cybi\u Tag。这是正确的语法。请记住列名区分大小写。
resulttable_calc = resulttable.groupby(level=0)
group_result = resulttable_calc.agg({'Exp. m/z':'mean','Intensity':'mean', 'Norm_Intensity':'mean'})