熊猫:用圆圈数

时间:2018-06-15 09:30:09

标签: python pandas numpy

我有一个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中进行计算会是最好的,但我被卡住了?

提前谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用groupby(),如下所示:

df.groupby(['ms', 'mass amu'])['SEM c/s'].mean()

答案 1 :(得分:0)

您在所有周期上有不同的 ms ,并且您希望计算 SEM 对每个的每组的平均值ms
我将向您展示一个循序渐进的例子 您应该调用每个组,然后将均值放在字典中以在DataFrame中转换。

.snippets().withAdditionalDefaults(new WireMockSnippet())

希望它会有所帮助