我有一个CSV文件(Mspec Data),如下所示:
#Header
#
"Cycle";"Time";"ms";"mass amu";"SEM c/s"
0000000001;00:00:01;0000001452; 1,00; 620
0000000001;00:00:01;0000001452; 1,20; 4730
0000000001;00:00:01;0000001452; 1,40; 4610
... ;..:..:..;..........;.........;...........
我通过以下方式阅读:
df = pd.read_csv(Filename, header=30,delimiter=';',decimal= ',' )
结果如下:
Cycle Time ms mass amu SEM c/s
0 1 00:00:01 1452 1.0 620
1 1 00:00:01 1452 1.2 4730
2 1 00:00:01 1452 1.4 4610
... ... ... ... ... ...
3872 4 00:06:30 390971 1.0 32290
3873 4 00:06:30 390971 1.2 31510
此数据包含几个具有相同参数的质谱扫描。循环编号1表示扫描1,依此类推。我想计算每个相应相同质量的最后一列SEM c / s的平均值。最后,我希望有一个仅包含以下内容的新数据框:
ms "mass amu" "SEM c/s(mean over all cycles)"
显然,不需要计算质量的平均值。我想避免将每个周期读入一个新的数据帧,因为这意味着我必须查找每个质谱的长度。对于不同的测量,“质量范围”和“resoltuion”明显不同(Soluion)。
我想直接在numpy中进行计算会是最好的,但我被卡住了?
提前谢谢
答案 0 :(得分:0)
您可以使用groupby()
,如下所示:
df.groupby(['ms', 'mass amu'])['SEM c/s'].mean()
答案 1 :(得分:0)
您在所有周期上有不同的 ms ,并且您希望计算 SEM 对每个的每组的平均值ms 。
我将向您展示一个循序渐进的例子
您应该调用每个组,然后将均值放在字典中以在DataFrame中转换。
.snippets().withAdditionalDefaults(new WireMockSnippet())
希望它会有所帮助