我只想平均数据帧中一列中包含的不同组的最后5行,并创建一个包含两列的新数据帧



我有一个包含四列的数据帧。在"强度"列中有3组(0、50、100(。我只想在"强度"列的3组中对"值"列的最后2个值求平均值。然后,我想制作一个新的数据帧,列为"复制"、"制度"、"强度"、"Value_mean"one_answers"Value_sd",最后两个是计算平均值和标准差。

Replication   Regime   Intensity   Value
1          Ctrl       0          2
1          Ctrl       0          3
1          Ctrl       0          4
1          Ctrl       0          5
1          Ctrl       0          6
1          Ctrl       0          7
1          Ctrl       50          1
1          Ctrl       50          2
1          Ctrl       50          2
1          Ctrl       50          4
1          Ctrl       50          6
1          Ctrl       50          6
1          Ctrl       100         2
1          Ctrl       100         1
1          Ctrl       100         0
2          Ctrl       100         3
2          Ctrl       0          7
2          Ctrl       0          3
2          Ctrl       0          6
2          Ctrl       0          2
2          Ctrl       0          1
2          Ctrl       0          5
2          Ctrl       50         12
2          Ctrl       50         22
2          Ctrl       50          52
2          Ctrl       50          22
2          Ctrl       50          2
2          Ctrl       50          2
2          Ctrl       100         22
2          Ctrl       100         2
2          Ctrl       100         25

到目前为止,我使用了application函数,但我没有得到数据帧,而是得到了一个系列

df2 = df1.groupby(['Regime','Intensity']).apply(lambda x: 
x.tail(3).mean(axis=0,level=0))

我得到

Intensity      A
Regime Intensity
Ctrl      0          0               -0.87
50         50               2.08
100        100               4.84

在第一步中使用DataFrame.tail,然后通过GroupBy.transform:创建新列

df2 = df1.groupby(['Regime','Intensity']).tail(3).copy()

df2['mean_val'] = df2.groupby('Regime')['Value'].transform('mean')
df2['std_val'] = df2.groupby('Regime')['Value'].transform('std') 
print (df2)
Replication Regime  Intensity  Value  mean_val    std_val
19            2   Ctrl          0      2  9.222222  10.425663
20            2   Ctrl          0      1  9.222222  10.425663
21            2   Ctrl          0      5  9.222222  10.425663
25            2   Ctrl         50     22  9.222222  10.425663
26            2   Ctrl         50      2  9.222222  10.425663
27            2   Ctrl         50      2  9.222222  10.425663
28            2   Ctrl        100     22  9.222222  10.425663
29            2   Ctrl        100      2  9.222222  10.425663
30            2   Ctrl        100     25  9.222222  10.425663

最新更新