为了账号安全,请及时绑定邮箱和手机立即绑定

替换行中高于列值的值

替换行中高于列值的值

郎朗坤 2021-05-06 18:50:21
这似乎很简单,但我无法弄清楚。因此,给定以下数据集: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我已经试过了:df.apply(lambda x: 0 if x > df['Mean'] else x)这导致ValueError:ValueError:('系列的真值不明确。请使用a.empty,a.bool(),a.item(),a.any()或a.all()。','发生在索引A' )
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

这应该工作

df[df>df.mean(axis=1).tolist()] = 0

或者,如果您想使用均值列

df[df>df['Mean'].tolist()] = 0


查看完整回答
反对 回复 2021-05-18
?
狐的传说

TA贡献1804条经验 获得超3个赞

我认为那可以工作


for i in range(df.shape[1]):

    mask = df.iloc[:,i] > df.Mean

    column_name = df.columns[i]

    df.loc[mask, column_name] = 0


查看完整回答
反对 回复 2021-05-18
  • 2 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号