2016-11-10 113 views
0

我的數據框這個樣子的熊貓GROUPBY和中位數在新列

Plate Sample LogRatio 
P1  S1  0.42 
P1  S2  0.23 
P2  S3  0.41 
P3  S4  0.36 
P3  S5  0.18 

我已經計算出每塊板的中位數正確的(但它可能不會像這樣開頭的最好的主意)

grouped = df.groupby("Plate") 
medianesPlate = grouped["LogRatio"].median() 

而且我想在我的數據幀

CorrectedLogRatio = LogRatio-median(plate) 

我想添加一列:

df["CorrectedLogRatio"] = LogRatio-median(plate) 

爲有這樣的事情:

Plate Sample LogRatio CorrectedLogRatio 
P1  S1  0.42 0.42-median(P1) 
P1  S2  0.23 0.23-median(P1) 
P2  S3  0.41 0.41-median(P2) 
P3  S4  0.36 0.36-median(P3) 
P3  S5  0.18 0.18-median(P3) 

但我不知道如何從medianesPlates中位數。 我嘗試了一些應用和轉換功能,但它不起作用。 感謝您的幫助

+0

究竟不工作,你得到了什麼錯誤?你可能是想使用'CorrectedLogRatio = LogRatio-medianesPlate'? – sobek

回答

1

您可以使用transform

df['CorrectedLogRatio'] = df['LogRatio'] - df.groupby('Plate')['LogRatio'].transform('median') 

輸出結果:

Plate Sample LogRatio CorrectedLogRatio 
0 P1  S1  0.42    0.095 
1 P1  S2  0.23    -0.095 
2 P2  S3  0.41    0.000 
3 P3  S4  0.36    0.090 
4 P3  S5  0.18    -0.090