如果单元格中的列表包含值,则pandas.series获取布尔值



我有一个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

最新更新