python - 如何使用每个向量条目来填充数据帧中单独组的 NAN

标签 python pandas dataframe missing-data fillna

假设我有一个向量ValsHR,如下所示:

valsHR=[78.8, 82.3, 91.0]

我有一个数据框MainData

Age  Patient  HR             
21   1        NaN
21   1        NaN
21   1        NaN
30   2        NaN
30   2        NaN
24   3        NaN
24   3        NaN
24   3        NaN 

我想要填充 NaN,以便 valsHR 中的第一个值将仅填充患者 1 的 NaN,第二个值将填充患者 2 的 NaN,第三个值将填充患者 3 的 NaN。

到目前为止我已经尝试过使用这个: mainData['HR'] = mainData['HR'].fillna(ValsHR) 但它用向量中的第一个值填充所有 NaN。

我也尝试过使用这个: mainData['HR'] = mainData.groupby('Patient').fillna(ValsHR) 使用 valsHR 向量中根本不存在的值填充 NaN。

我想知道是否有人知道如何做到这一点?

最佳答案

根据包含缺失值的Patient值创建字典,映射到原始列并仅替换缺失值:

print (df)
   Age  Patient     HR
0   21        1    NaN
1   21        1    NaN
2   21        1    NaN
3   30        2  100.0 <- value is not replaced
4   30        2    NaN
5   24        3    NaN
6   24        3    NaN
7   24        3    NaN


p = df.loc[df.HR.isna(), 'Patient'].unique()
valsHR = [78.8, 82.3, 91.0]

df['HR'] = df['HR'].fillna(df['Patient'].map(dict(zip(p, valsHR))))
print (df)
   Age  Patient     HR
0   21        1   78.8
1   21        1   78.8
2   21        1   78.8
3   30        2  100.0
4   30        2   82.3
5   24        3   91.0
6   24        3   91.0
7   24        3   91.0

如果某些组没有 NaN:

print (df)
   Age  Patient     HR
0   21        1    NaN
1   21        1    NaN
2   21        1    NaN
3   30        2  100.0 <- group 2 is not replaced
4   30        2  100.0 <- group 2 is not replaced
5   24        3    NaN
6   24        3    NaN
7   24        3    NaN


p = df.loc[df.HR.isna(), 'Patient'].unique()
valsHR = [78.8, 82.3, 91.0]

df['HR'] = df['HR'].fillna(df['Patient'].map(dict(zip(p, valsHR))))
print (df)
   Age  Patient     HR
0   21        1   78.8
1   21        1   78.8
2   21        1   78.8
3   30        2  100.0
4   30        2  100.0
5   24        3   82.3
6   24        3   82.3
7   24        3   82.3

关于python - 如何使用每个向量条目来填充数据帧中单独组的 NAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68161652/

相关文章:

python - 在 pandas 中计算数据集的每月天值

python - 如何找到在 Graphlab SFrame 中保存时引发错误的特定行?

pandas - 按日期平均 Pandas 数据框

Python数据框: Remove digits in odd position from df rows?

python - 在 Python 中创建类似网络的图形桁架

python - scrapy:避免循环重新爬行

python - 2 列表中的缺失值和附加值

python - 如何在 Pandas 中的 "day period"上覆盖数据以进行绘图

python - Pandas 上的 fiilna() 方法在 axis=1 上调用时忽略就地参数返回错误

Python Pandas - Lambda 应用保持初始格式