DataFrame中的列表比较

190 阅读1分钟

如果你经常尝试在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])

这种方式调用匿名函数逐个比较,而不是使用哈希表比较,自然不会造成之前的错误