我有一个pandas系列,其中每个单元格都有一个值列表。我想得到一个布尔值,无论单元格中的列表是否包含值。
熊猫系列:
0 [1, 2, 2, 2]
1 [1, 2, 2]
2 [1, 2]
3 [1, 2]
4 [1, 2]
...
1697 [1, 1, 1, 2, 2]
1698 [1, 2, 2]
1699 [1, 2]
1700 [1, 2, 2]
1701 [1, 2]
"isin"不起作用,"数据中的1[顶层]"也不起作用。它只是查看1是否在整个序列中,而不是每个单元格中。
我将感谢一些提示和帮助。
使用具有列表理解的in
:
mask = [1 in x for x in data['top-level']]
或者在Series.apply
:中使用in
mask = data['top-level'].apply(lambda x: 1 in x)
或者创建DataFrame
,通过DataFrame.eq
进行比较,并通过DataFrame.any
:测试每行至少一个True
mask = pd.DataFrame(data['top-level'].tolist(), index=data.index).eq(1).any(axis=1)
编辑:
print (data)
top-level
0 [1,2,2,2]
1 [1,2,2]
2 [1,2, 3]
3 [4,5,6]
data = data['top-level'].apply(lambda x: any((number >= 1) and (number < 2) for number in x))
print (data)
0 True
1 True
2 True
3 False
Name: top-level, dtype: bool