renjie0310 2022-09-24 09:35 采纳率: 0%
浏览 56

DataFrame布尔索引的赋值问题

看利用PYTHON进行数据分析中有这样一个示例,比较难以理解,请帮忙解答一下。

>>> data=pd.DataFrame(data=pd.DataFrame(np.arange(18).reshape(6,3)))
>>> data
    0   1   2
0   0   1   2
1   3   4   5
2   6   7   8
3   9  10  11
4  12  13  14
5  15  16  17
布尔索引并赋值:
>>> data[data>5]=np.sign(data)
>>> data
   0  1  2
0  0  1  2
1  3  4  5
2  1  1  1
3  1  1  1
4  1  1  1
5  1  1  1
>>> 

按照逻辑:
>>> data[data>5]
      0     1     2
0    x   x   x
1   x   x   x
2   6.0   7.0   8.0
3   9.0  10.0  11.0
4  12.0  13.0  14.0
5  15.0  16.0  17.0
>>> 
>>> np.sign(data)
   0  1  2
0  0  1  1
1  1  1  1
2  1  1  1
3  1  1  1
4  1  1  1
5  1  1  1

按说两个DataFrame应该是逐一元素赋值的,为什么上面x=NAN
部分没有被赋值呢,还是他们有什么规则,还是我理解有偏差。

  • 写回答

2条回答 默认 最新

  • Elwin Wong 2022-09-24 10:04
    关注

    要明白data>5是对data的索引和选择的过程,只有满足条件的位置才会被选择和操作,其余的不参与,所以这里会把no.sign(data)对应的位置赋值给data,其他位置不变

    评论

报告相同问题?

问题事件

  • 创建了问题 9月24日