Python 一系列阵列的滤波
我有一个熊猫系列,里面有阵列,看起来像这样: [80]中的Python 一系列阵列的滤波,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个熊猫系列,里面有阵列,看起来像这样: [80]中的set.tail(7) 出[80]: 区块编号 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。。。 名称:块标题,数据类型:对象 我试图筛选出数组中具有b'\x3f3f'的行(块编号值),并且它必须是数组中的唯一值
set.tail(7)
出[80]:
区块编号
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。。。
名称:块标题,数据类型:对象
我试图筛选出数组中具有b'\x3f3f'
的行(块编号值),并且它必须是数组中的唯一值
我从一个df的groupby那里得到了这个系列,类似这样:
set=frame[['block\u number','block\u header']]
.groupby(['block\u number'])['block\u header'].agg('unique'))
我正在努力在这个系列中使用.where()w/lambda,我想这对于熊猫第一次使用来说还不够简单
感谢您的帮助,谢谢!我想您需要条件-通过中的检查数组中的值,并获取数组的长度:
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]
黑魔法,就像一个符咒。回到文档来了解它是如何工作的:-)所有文档都说“.str可以用来以字符串的形式访问序列的值,并对其应用多种方法”-在这种情况下,它似乎可以工作(它返回数组的len())-但我不明白为什么,我希望它会被转换成字符串或其他奇怪的东西。你知道这到底是如何工作的吗?是的,这有点复杂。但列中一些值的列表或数组的长度与字符串的长度相同。检查它print(len('aaaa'))
和print(len([1,2,3,4])