[] 操作符支持 DataFrame 实例
先问您一下:您知道 df1 > 4 返回的类型是什么吗?
答案:DataFrame 实例,结果如下,元素取值不难理解。
c1 c2 c3
r1 True True True
r2 False False False
r3 True True False
r4 True True False
既然 [] 操作符支持 DataFrame 实例,那么返回的结果您一定想知道:
df1[ df1 > 4 ]
#结果如下:
c1 c2 c3
r1 6.0 9.0 6.0
r2 NaN NaN NaN
r3 8.0 7.0 NaN
r4 5.0 6.0 NaN
看到结果,可能不用解释,您也知道怎么回事了。
下面,引出一个奇怪的问题,大家可以回去思考。这个操作的 readable 不是很好,所以觉得此操作很奇怪。
上面讲到,[] 操作符支持 DataFrame 实例,不过,如果我们剥去它的层层外衣,直奔最本质,揪出它后就是一个 list 实例:
inner = ((df1>4).values).tolist()
inner
#结果,类型是 list
[[True, True, True],
[False, False, False],
[True, True, False],
[True, True, False]]
接下来,就是见证奇迹的时刻:
df1[inner]
#结果 ???
您想到了吗?
答案:
c1 c2 c3
r1 6 9 6
r1 6 9 6
r1 6 9 6
r3 8 7 3
r3 8 7 3
r4 5 6 3
r4 5 6 3
差不多,您也可以解释为什么结果是这样了吧!今天,只想尽量聊透 [] 操作符访问数据这个知识点,当然还有更多的访问数据的函数,比如 iloc, loc 等。