Python:Mask正在用NaN替换列值



我正试图用组平均值替换15000列[columns 6:14844]中的零,同时保持组标签列[column 1]和其他几个标识列[columns2:5]不变。这是我想出的代码,它很有效,除了它用NaNs 替换了我想跳过[1:5]的列之外

df = df.mask(df.iloc[:, np.r_[1, 6:14844]].eq(0), df.iloc[:, np.r_[1, 6:14844]].groupby('group_label').transform('mean'))

提前谢谢。

您只需要分配列的子集,而不需要分配整个DataFrame。

df.iloc[:, 6:14844] = (df.iloc[:, 6:14844]
.mask(df.iloc[:, 6:14844].eq(0),
df.iloc[:, np.r_[1, 6:14844]]
.groupby('group_label')
.transform('mean')))

最新更新