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

问题:给定 DataFrame b,如何通过布尔掩码列标识将多列的值替换为一个值?

什么有效,但我不想要:

b.iloc[:, 2:6] = "someConstantValue"

什么不起作用,但我想要:

b.iloc[:, 2:6][b["columnA"] == "someCondition"]] = "someConstantValue"

谢谢你的时间!


波斯汪
浏览 174回答 2
2回答

繁星淼淼

您必须使用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  E0  a  4  7  1  51  b  5  8  3  32  a  4  9  5  63  a  5  4  7  94  e  5  2  1  25  f  4  3  0  4b.loc[b["A"] == "a", b.columns[2:6]] = 100print (b)   A  B    C    D    E0  a  4  100  100  1001  b  5    8    3    32  a  4  100  100  1003  a  5  100  100  1004  e  5    2    1    25  f  4    3    0    4

临摹微笑

您可以将其iloc与布尔索引一起使用,但要小心。它适用于布尔数组,而不是布尔序列。例如:b.iloc[(b['A'] == 'a').values, 2:6] = 'someConstantValue'顺便说一句,在文档中明确不鼓励使用链式索引。永远都不需要使用链接索引。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python