我有一个示例数据帧,如下所示。我正在尝试通过按列' Sample_ID'将它们组合在一起来计算每列的数据。那就是我会根据每个' Sample_ID'来计算第一列的平均值和标准差。组(1,2和3)。我可以为一个甚至几个列做这个。对于我的新数据,我有100列。
df = pd.DataFrame([[1, 1.0, 2.3,0.2,0.53], [2, 3.35, 2.0,0.2,0.65], [2,3.4,
2.0,0.25,0.55], [3,3.4,2.0,0.25,0.55], [1,3.4,2.0,0.25,0.55],
[3,3.4,2.0,0.25,0.55]],
columns=["Sample_ID", "NaX", "NaU","OC","EC"])\
.set_index('Sample_ID')
有没有办法循环遍历每一列并保存它们?以下是一列数据的示例计算,我需要对100列数据进行此计算。
感谢您阅读本文!
OC_UNC=100*np.sqrt((((df.groupby(['Sample_ID'])['OC'].std()
/df.groupby(['Sample_ID'])['OC'].mean())**2).sum()
)/len((df.groupby(['Sample_ID'])['OC'].count())))
答案 0 :(得分:5)
IIUC:
In [31]: df.groupby('Sample_ID').agg('std')
Out[31]:
NaX NaU OC EC
Sample_ID
1 1.697056 0.212132 0.035355 0.014142
2 0.035355 0.000000 0.035355 0.070711
3 0.000000 0.000000 0.000000 0.000000
计算:mean
和std
:
In [32]: df.groupby('Sample_ID').agg(['mean','std'])
Out[32]:
NaX NaU OC EC
mean std mean std mean std mean std
Sample_ID
1 2.200 1.697056 2.15 0.212132 0.225 0.035355 0.54 0.014142
2 3.375 0.035355 2.00 0.000000 0.225 0.035355 0.60 0.070711
3 3.400 0.000000 2.00 0.000000 0.250 0.000000 0.55 0.000000
答案 1 :(得分:4)
比你要求的方式更多
df.groupby('Sample_ID').describe()
NaX NaU ... OC EC
count mean std min 25% 50% 75% max count mean ... 75% max count mean std min 25% 50% 75% max
Sample_ID ...
1 2.0 2.200 1.697056 1.00 1.6000 2.200 2.8000 3.4 2.0 2.15 ... 0.2375 0.25 2.0 0.54 0.014142 0.53 0.535 0.54 0.545 0.55
2 2.0 3.375 0.035355 3.35 3.3625 3.375 3.3875 3.4 2.0 2.00 ... 0.2375 0.25 2.0 0.60 0.070711 0.55 0.575 0.60 0.625 0.65
3 2.0 3.400 0.000000 3.40 3.4000 3.400 3.4000 3.4 2.0 2.00 ... 0.2500 0.25 2.0 0.55 0.000000 0.55 0.550 0.55 0.550 0.55