我的数据框包含数百列。幸运的是,它们可以分为具有常规列名的两大组。第 1 组包含列 Pdc、Pdc.1、Pdc.2 .... Pdc.250。第 2 组由 Pac、Pac.1.、Pac.2 .... Pac.250 组成。请注意,每组的第一列不包含后缀编号。
我想填充所有 NaN,无论它们在哪里,使用以下规则:
第 1 组(目标列和行)列的任何行中的 NaN 将用第 2 组中的列中的值以相同的顺序填充(源列和行)乘以目标列的平均值除以源列的平均值。
为了简单起见,例如,如果 NaN 在 Pdc.25 第 10 行(第 1 组)中,则应填充为:
Pdc.25 第 10 行 = Pac.25 第 10 行 *(平均 Pdc.25 / 平均 Pac.25 )
如果 NaN 在第 2 组中,则公式如下:
Pac.30 row 15 = Pdc.30 row 15 * (mean Pac.30 / mean Pdc.30)
我写了以下代码:
df['Pdc.25'] = (df['Pdc.25'].fillna(df['Pac.25']*((df['Pdc.25'].mean()/df['Pac.25'].mean())))).to_frame()
df['Pac.30'] = (df['Pac.30'].fillna(df['Pdc.30']*((df['Pac.30'].mean()/df['Pdc.30'].mean())))).to_frame()
上面的代码工作得很好,但是对于 500 列,我必须写 500 行方程。
知道如何使它变得简单,例如,通过自动定位 NaN 并根据规则填充它们吗?
谢谢你看我的问题。
千巷猫影
相关分类