我正在嘗試根據具有相同錄取代碼的成員分組及其平均逗留時間值來設定類別。
我的意思是,我有以下資料框:
| 會員ID | 錄取代碼 | 服務水平 |
|---|---|---|
| 1 | 一種 | 5 |
| 2 | 一種 | 10 |
| 1 | 乙 | 2 |
| 2 | 乙 | 1 |
現在,在上面的資料框中,我想根據準入代碼進行分組,并取該特定準入代碼的 LOS 平均值,如果 LOS 小于平均值,則將其設定為“0”類別或“1”。
因此,對于上述承認代碼“a”的情況,我們將 LOS 設為 5 和 10。這里,平均值為 7.5,因此 MemeberID 為 1,AdmittingCode 為“a”,LOS 為“5”,將設定為類別 0。與邏輯類似,獲取以下資料幀:
| 會員ID | 錄取代碼 | 服務水平 | LOSC類別 |
|---|---|---|---|
| 1 | 一種 | 5 | 0 |
| 2 | 一種 | 10 | 1 |
| 1 | 乙 | 2 | 1 |
| 2 | 乙 | 1 | 0 |
uj5u.com熱心網友回復:
使用GroupBy.transform與mean和比較原始的列:
m = df.groupby('AdmittingCode')['LOS'].transform('mean').lt(df['LOS'])
df['LOSCategory'] = m.astype(int)
print (df)
MemberID AdmittingCode LOS LOSCategory
0 1 a 5 0
1 2 a 10 1
2 1 b 2 1
3 2 b 1 0
或者如果需要設定為字串1, 0:
df['LOSCategory'] = m.astype(int).astype(str)
df['LOSCategory'] = np.where(m, '1', '0')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/340123.html
標籤:蟒蛇-3.x 熊猫 数据框 pandas-groupby
