我正试图用组平均值替换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')))