這似乎很簡單,但我無法弄清楚。因此,給定以下數(shù)據(jù)集:df = pd.DataFrame(np.random.randint(0,100,size=(50, 3)), columns=list('ABC'))df['Mean'] = df.mean(axis=1) A B C Mean0 26 6 73 35.0000001 89 55 29 57.6666672 8 89 87 61.3333333 83 25 64 57.3333334 35 89 97 73.666667如何替換單行中高于該行的平均列的所有值?所需的輸出: A B C Mean0 26 6 0 35.0000001 0 55 29 57.6666672 8 0 0 61.3333333 0 25 0 57.3333334 35 0 0 73.666667我已經(jīng)試過了:df.apply(lambda x: 0 if x > df['Mean'] else x)這導(dǎo)致ValueError:ValueError:('系列的真值不明確。請使用a.empty,a.bool(),a.item(),a.any()或a.all()。','發(fā)生在索引A' )
2 回答

MMMHUHU
TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個贊
這應(yīng)該工作
df[df>df.mean(axis=1).tolist()] = 0
或者,如果您想使用均值列
df[df>df['Mean'].tolist()] = 0

狐的傳說
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個贊
我認(rèn)為那可以工作
for i in range(df.shape[1]):
mask = df.iloc[:,i] > df.Mean
column_name = df.columns[i]
df.loc[mask, column_name] = 0
添加回答
舉報
0/150
提交
取消