我有一個包含 NaN 值的患者生命體征(HR、O2Sat、Temp、SBP、DBP、Resp)的資料框。我使用以下代碼根據患者 ID (P_ID) 列在單個患者中填寫了 NaN:
m['HR'] = m['HR'].fillna(m.groupby('P_ID')['HR'].transform('mean'))
m['O2Sat'] = m['O2Sat'].fillna(m.groupby('P_ID')['O2Sat'].transform('mean'))
m['Temp'] = m['Temp'].fillna(m.groupby('P_ID')['Temp'].transform('mean'))
m['SBP'] = m['SBP'].fillna(m.groupby('P_ID')['SBP'].transform('mean'))
m['DBP'] = m['DBP'].fillna(m.groupby('P_ID')['DBP'].transform('mean'))
m['Resp'] = m['Resp'].fillna(m.groupby('P_ID')['Resp'].transform('mean'))
它作業得很好。但是,它有很多代碼。無論如何,我是否使用for 回圈僅在重要列中填充 NaN 值?因為還有一些沒有 NaN 值的列。謝謝。
uj5u.com熱心網友回復:
是的,您可以使用回圈
for i in ['HR','O2Sat','Temp','SBP','DBP','Resp']:
m[i] = m[i].fillna(m.groupby('P_ID')[i].transform('mean'))
uj5u.com熱心網友回復:
為了避免不必要的行和冗長的腳本,您可以使用資料框的columns
屬性。但請注意,由于您提到了重要列,因此可能有一些列您不想執行以下代碼:
for column in m.columns:
m[column] = m.fillna(m.groupby('P_ID')[column].transform('mean'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/433021.html
上一篇:使用成對的串列串列回圈串列
下一篇:用for回圈中的值填充陣列