我有一個四列的資料框。在“強度”列中有 3 個組(0、50、100)。我只想平均列“強度”的 3 組中列值的最后 2 個值。然后我想創建一個包含“復制”、“制度”、“強度”、“Value_mean”和“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
到目前為止,我使用了函式apply,但我沒有得到一個資料框,而是一個系列
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
uj5u.com熱心網友回復:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/381287.html
