如果你经常尝试在DataFrame中存放列表并对列表进行过取等,你会发现结果这和你预想的不同
df = pandas.DataFrame([[1,2,3,[4,5]],[6,7,8,[9,10]]], columns=['a','b','c','d'])
>>> df
a b c d
0 1 2 3 [4, 5]
1 6 7 8 [9, 10]
当你用d构建过滤器的时候
>>> df['d'] == [4,5]
0 False
1 False
Name: d, dtype: bool
造成这种现象的原因是,DataFrame中存储的列表不可哈希(散列)
如果你想正确的构建过滤器,你可以用一下方式
df.loc[:, 'd'].map(lambda x:x==[4,5])
这种方式调用匿名函数逐个比较,而不是使用哈希表比较,自然不会造成之前的错误