I have an example dataframe as noted below. I am trying to calculate data for each column by grouping them together by column 'Sample_ID'. That is I would calculate the mean and standard deviation for the first column by each 'Sample_ID' group (1, 2 and 3). I can do this for one or even a few columns. For my new data, I have 100 columns.
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')
Is there a way to loop through each column and save them? Here is the example calculation for one column of data, I need to do this calculation for 100 columns of data.
Thanks for reading this!
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())))
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
calculating both: mean and 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
Way more than you asked for
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With