使用 For 循环填充所选数据框列的 NaN 值
Fill NaN values of selected dataframe columns using For loop
我有一个包含 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 loop 只在重要的列中填充 NaN 值?因为还有一些没有 NaN 值的列。谢谢
是的,你可以使用循环
for i in ['HR','O2Sat','Temp','SBP','DBP','Resp']:
m[i] = m[i].fillna(m.groupby('P_ID')[i].transform('mean'))
为了避免不必要的行和冗长的脚本,您可以使用数据框的 columns
属性。但请注意,由于您提到了 vital 列,因此可能有一些列您不想执行以下代码。:
for column in m.columns:
m[column] = m.fillna(m.groupby('P_ID')[column].transform('mean'))
我有一个包含 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 loop 只在重要的列中填充 NaN 值?因为还有一些没有 NaN 值的列。谢谢
是的,你可以使用循环
for i in ['HR','O2Sat','Temp','SBP','DBP','Resp']:
m[i] = m[i].fillna(m.groupby('P_ID')[i].transform('mean'))
为了避免不必要的行和冗长的脚本,您可以使用数据框的 columns
属性。但请注意,由于您提到了 vital 列,因此可能有一些列您不想执行以下代码。:
for column in m.columns:
m[column] = m.fillna(m.groupby('P_ID')[column].transform('mean'))