我试图按列表过滤包含列表行的pandas数据帧。 一个最小的例子是:
>>>import pandas as pd
>>>d={'a':[[1,2],[3,4]], 'b':[['f1','f2'],['f3','f4']]}
>>>ds = pd.DataFrame(d)
>>>ds
a b
0 [1, 2] [f1, f2]
1 [3, 4] [f3, f4]
>>> ds.a == [1,2]
0 False
1 False
Name: a, dtype: bool
我正在寻找的是一种方法:
ds.a == [1,2]
0 True
1 False
答案 0 :(得分:0)
使用:
d={'a':[[2,1],[3,4],[1,2]], 'b':[['f1','f2'],['f3','f4'],['f5','f6']]}
ds = pd.DataFrame(d)
print (ds)
a b
0 [2, 1] [f1, f2]
1 [3, 4] [f3, f4]
2 [1, 2] [f5, f6]
#not important order - compare set
print (ds.a.apply(set) == set([1,2]))
0 True
1 False
2 True
Name: a, dtype: bool
#important order - compare tuples
print (ds.a.apply(tuple) == tuple([1,2]))
0 False
1 False
2 True
Name: a, dtype: bool