我有一个带有阵列的Pandas系列,看起来像这样:
users_id | checkin_date | checkout_date | delayed_checkin remarks | early_checkout_remarks | Leave Remarks
1 | 2017-01-28 | 2017-01-28 | traffic jam | NULL | NULL
2 | 2017-01-28 | 2017-01-28 | household | NULL | NULL
2 | 2017-01-29 | 2017-01-30 | NULL | NULL |Personal : Trekking
3 | 2017-01-28 | 2017-01-28 | NULL | NULL | NULL
4 | 2017-01-28 | 2017-01-28 | traffic jam | sick | NULL
1 | 2017-01-29 | 2017-01-29 | traffic jam | NULL | NULL
3 | 2017-01-29 | 2017-01-29 | NULL | bored| NULL
4 | 2017-01-29 | 2017-01-29 | traffic jam | NULL | NULL
5 | 2017-01-28 | 2017-01-30 | NULL | NULL | Sick : Fever (Or something like this)
我正在尝试过滤掉数组中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
的那些行(block_number值),它必须是数组中唯一的值。
由于来自df的groupby,我得到了这个系列,如下所示:
b'\x3f3f'
我很难在这个系列上使用.where()w / lambda,我想这对于Pandas第一次使用来说并不是一件容易的事。
感谢任何帮助,谢谢!
答案 0 :(得分:1)
我认为您需要boolean indexing
有条件 - 请in
array
和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]