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

熊猫:使用布尔型掩码替换多列的值

熊猫:使用布尔型掩码替换多列的值

波斯汪 2021-05-30 12:48:38
问题:给定 DataFrame b,如何通过布尔掩码列标识将多列的值替换为一个值?什么有效,但我不想要:b.iloc[:, 2:6] = "someConstantValue"什么不起作用,但我想要:b.iloc[:, 2:6][b["columnA"] == "someCondition"]] = "someConstantValue"谢谢你的时间!
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您必须使用DataFrame.loc,对于按位置使用的列名称,请使用indexing by b.columns[2:6]。


b = pd.DataFrame({'A':list('abaaef'),

                   'B':[4,5,4,5,5,4],

                   'C':[7,8,9,4,2,3],

                   'D':[1,3,5,7,1,0],

                   'E':[5,3,6,9,2,4]})


print (b)

   A  B  C  D  E

0  a  4  7  1  5

1  b  5  8  3  3

2  a  4  9  5  6

3  a  5  4  7  9

4  e  5  2  1  2

5  f  4  3  0  4


b.loc[b["A"] == "a", b.columns[2:6]] = 100

print (b)

   A  B    C    D    E

0  a  4  100  100  100

1  b  5    8    3    3

2  a  4  100  100  100

3  a  5  100  100  100

4  e  5    2    1    2

5  f  4    3    0    4


查看完整回答
反对 回复 2021-06-01
?
临摹微笑

TA贡献1982条经验 获得超2个赞

您可以将其iloc与布尔索引一起使用,但要小心。它适用于布尔数组,而不是布尔序列。例如:

b.iloc[(b['A'] == 'a').values, 2:6] = 'someConstantValue'

顺便说一句,在文档中明确不鼓励使用链式索引。永远都不需要使用链接索引。


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信