过滤 Pandas 系列数组

Filtering Pandas Series of arrays

我有一个 Pandas 系列,里面有数组,看起来像这样:

In [80]: set.tail(7)
Out[80]: 
block_number
942                                                [b'??']
943                                                [b'??']
944                                      [b'??', b'\xff?']
945                                                [b'??']
65280                                        [b'\xff\xff']
65281                                        [b'\xff\xff']
65535    [b'\xff\xff', b'\x01\xa0', b'\x81\xa0', b'\x01...
Name: block_header, dtype: object

我正在尝试过滤掉那些在数组中具有 b'\x3f3f' 的行(block_number 值)并且它必须是数组中的唯一值。

我通过 df 的 groupby 获得了这个系列,如下所示:

set = frame[['block_number', 'block_header']]
        .groupby(['block_number'])['block_header'].agg('unique')

我正在努力在这个系列中使用 .where() w/lambda,我想这对于第一次 Pandas 使用来说还不够简单。

感谢任何帮助,谢谢!

我认为你需要 boolean indexing with condtions - check by in value in array and str.len 来获取 array 的长度:

s = frame[['block_number', 'block_header']]
          .groupby(['block_number'])['block_header'].agg('unique')

a = b'\x3f3f'
mask = (s.apply(lambda x: a in x)) & (s.str.len() == 1)
out = s[~mask]